GNSS signal processing to estimate MW biases

ABSTRACT

Methods and apparatus are described for processing a set of GNSS signal data derived from code observations and carrier-phase observations at multiple receivers of GNSS signals of multiple satellites over multiple epochs, the GNSS signals having at least two carrier frequencies, comprising: forming an MW (Melbourne-Wübbena) combination per receiver-satellite pairing at each epoch to obtain a MW data set per epoch, and estimating from the MW data set per epoch an MW bias per satellite which may vary from epoch to epoch, and a set of WL (widelane) ambiguities, each WL ambiguity corresponding to one of a receiver-satellite link and a satellite-receiver-satellite link, wherein the MW bias per satellite is modeled as one of (i) a single estimation parameter and (ii) an estimated offset plus harmonic variations with estimated amplitudes.

CROSS-REFERENCE TO RELATED APPLICATIONS

The following are related hereto and incorporated herein in theirentirety by this reference: U.S. patent application Ser. No. 12/660,091filed 20 Feb. 2010; U.S. patent application Ser. No. 12/660,080 filed 20Feb. 2010; U.S. Provisional Application for Patent No. 61/277,184 filed19 Sep. 2009; International Patent Application PCT/US2009/059552 filed 5Oct. 2009, published as WO 2010/042441 on 15 Apr. 2010; U.S. ProvisionalApplication for Patent No. 61/195,276 filed 6 Oct. 2008; InternationalPatent Application PCT/US/2009/004471 filed 5 Aug. 2009, published as WO2010/021656 on 25 Feb. 2010; International Patent ApplicationPCT/US/2009/004473 filed 5 Aug. 2009, published as WO 2010/021658 on 25Feb. 2010; International Patent Application PCT/US/2009/004474 filed 5Aug. 2009, published as WO 2010/021659 on 25 Feb. 2010; InternationalPatent Application PCT/US/2009/004472 filed 5 August 2009, published asWO 2010/021657 on 25 Feb. 2010; International Patent ApplicationPCT/US/2009/004476 filed 5 Aug. 2009 published as WO 2010/021660 A3 on25 Feb. 2010; U.S. Provisional Application for Patent No. 61/189,382filed 19 Aug. 2008; U.S. Pat. No. 7,576,690 issued 18 Aug. 2009; U.S.patent application Ser. No. 12/451,513 filed 22 June 2007, published asUS 2010/0141515 on 10 Jun. 2010; U.S. Pat. No. 7,755,542 issued 13 Jul.2010; International Patent Application PCT/US07/05874 filed 7 Mar. 2007,published as WO 2008/008099 on 17 Jan. 2008; U.S. patent applicationSer. No. 11/988,763 filed 14 Jan. 2008, published as US 2009/0224969 A1on 10 Sep. 2009; International Patent Application No. PCT/US/2006/034433filed 5 Sep. 2006, published as WO 2007/032947 on 22 Mar. 2007; U.S.Pat. No. 7,432,853 granted 7 Oct. 2008; International Patent ApplicationNo. PCT/US2004/035263 filed 22 Oct. 2004, published as WO 2005/045463 on19 May 2005; U.S. Pat. No. 6,862,526 granted 1 Mar. 2005. Prioritybenefit of U.S. Provisional Application for Patent No. 61/277,184 filed19 Sep. 2009 is hereby claimed.

BACKGROUND

The invention relates to GNSS signal processing, and particularly toGNSS signal processing involving precise satellite data.

BRIEF SUMMARY

Methods and apparatus are described for processing a set of GNSS signaldata derived from code observations and carrier-phase observations atmultiple receivers of GNSS signals of multiple satellites over multipleepochs, the GNSS signals having at least two carrier frequencies,comprising: forming an MW (Melbourne-Wübbena) combination perreceiver-satellite pairing at each epoch to obtain a MW data set perepoch, and estimating from the MW data set per epoch an MW bias persatellite which may vary from epoch to epoch, and a set of WL (widelane)ambiguities, each WL ambiguity corresponding to one of areceiver-satellite link and a satellite-receiver-satellite link, whereinthe MW bias per satellite is modeled as one of (i) a single estimationparameter and (ii) an estimated offset plus harmonic variations withestimated amplitudes.

In some embodiments, corrections are applied to the GNSS signal data. Insome embodiments, at least one linear combination of GNSS signal data issmoothed before estimating an MW bias per satellite. In someembodiments, at least one MW bias constraint is applied. In someembodiments, at least one integer WL ambiguity constraint is applied. Insome embodiments, a spanning tree (ST) is used over one of anobservation graph and a filter graph for constraining the WLambiguities. In some embodiments, a minimum spanning tree (MST) is usedon one of an observation graph and a filter graph for constraining theWL ambiguities.

In some embodiments, the minimum spanning tree is based on edge weights,each edge weight derived from receiver-satellite geometry. In someembodiments, the edge weight is defined with respect to one of (i) ageometric distance from receiver to satellite, (ii) a satelliteelevation angle, and (iii) a geometric distance from satellite toreceiver to satellite, and (iv) a combination of the elevations underwhich the two satellites in a single differenced combination are seen ata station. In some embodiments, the minimum spanning tree is based onedge weights, with each edge weight based on WL ambiguity information,defined with respect to one of (i) difference of a WL ambiguity tointeger, (ii) WL ambiguity variance, and (iii) a combination of (i) and(ii).

In some embodiments, at least one of the WL ambiguities is fixed as aninteger value. In some embodiments, candidate sets of WL integerambiguity values are determined, a weighted combination of the candidatesets is formed, and at least one of the WL ambiguities is fixed as avalue taken from the weighted combination. In some embodiments, theestimating step comprises introducing fixed WL ambiguities so as toestimate MW biases which are compatible with fixed WL ambiguities. Insome embodiments, the estimating step comprises applying an iterativefilter to the MW data per epoch and wherein introducing fixed WLambiguities comprises one of (i) putting the fixed WL ambiguities asobservations into the filter, (ii) putting the fixed WL ambiguities asobservations into a copy of the filter generated after each of aplurality of observation updates, and (iii) reducing the MW combinationsby the fixed WL ambiguities and putting the resulting reduced MWcombinations into a second filter without ambiguity states to estimateat least one MW bias per satellite.

In some embodiments, at least one MW bias is shifted by an integernumber of WL cycles. In some embodiments, at least one MW bias and itsrespective WL ambiguity are shifted by an integer number of WL cycles.In some embodiments, the navigation message comprises orbit information.

Some embodiments provide apparatus for performing one or more of thedescribed methods. Some embodiments provide a computer programcomprising instructions configured, when executed on a computerprocessing unit, to carry out one or more of the described methods. Someembodiments provide a tangible computer-readable medium embodying such acomputer program.

BRIEF DESCRIPTION OF DRAWINGS

These and other aspects and features of the present invention will bemore readily understood from the embodiments described below withreference to the drawings, in which:

FIG. 1 shows a high-level view of a system in accordance with someembodiments of the invention;

FIG. 2 shows a high-level view of a system and system data in accordancewith some embodiments of the invention;

FIG. 3 is a schematic diagram of network processor architecture inaccordance with some embodiments of the invention;

FIG. 4 is a schematic diagram of data correction in accordance with someembodiments of the invention;

FIG. 5 is a schematic view of linear combinations of observations inaccordance with some embodiments of the invention;

FIG. 6 is a schematic view of a generic Kalman filter process;

FIG. 7 is a schematic diagram of a code-leveled clock processor inaccordance with some embodiments of the invention;

FIG. 8 is a schematic diagram of a Melbourne-Wübbena bias process flowin accordance with some embodiments of the invention;

FIG. 9 is a schematic diagram of a Melbourne-Wübbena bias process flowin accordance with some embodiments of the invention;

FIG. 10A shows filter states of an undifferenced Melbourne-Wübbena biasprocessor in accordance with some embodiments of the invention;

FIG. 10B shows filter states of a single-differenced Melbourne-Wübbenabias processor in accordance with some embodiments of the invention;

FIG. 11 is a schematic diagram of a Melbourne-Wübbena bias processor inaccordance with some embodiments of the invention;

FIG. 12 is a schematic diagram of a Melbourne-Wübbena bias processor inaccordance with some embodiments of the invention;

FIG. 13 is a schematic diagram of a Melbourne-Wübbena bias processor inaccordance with some embodiments of the invention;

FIG. 14 is a schematic diagram of a Melbourne-Wübbena bias processor inaccordance with some embodiments of the invention;

FIG. 15 is a schematic diagram of a Melbourne-Wübbena bias processor inaccordance with some embodiments of the invention;

FIG. 16A is an observation graph of GNSS stations and satellites;

FIG. 16B is an abstract graph showing stations and satellites asvertices and station-satellite observations as edges;

FIG. 16C depicts a minimum spanning tree of the graph of FIG. 19B;

FIG. 16D depicts a minimum spanning tree with constrained edges;

FIG. 16E is an undifferenced observation graph of GNSS stations andsatellites;

FIG. 16F is an filter graph corresponding to the observation graph ofFIG. 19E;

FIG. 16G is a single-differenced observation graph of GNSS stations andsatellites;

FIG. 16H is a filter graph corresponding to the observation graph ofFIG. 19G;

FIG. 16I is a set of observations graphs comparing constraints inundifferenced and single-differenced processing;

FIG. 17 is a schematic diagram of a Melbourne-Wübbena bias processor inaccordance with some embodiments of the invention;

FIG. 18A shows a spanning tree on an undifferenced observation graph;

FIG. 18B shows a minimum spanning tree on an undifferenced observationgraph;

FIG. 18C shows a spanning tree on a single-differenced observationgraph;

FIG. 18D shows a minimum spanning tree on a single-differencedobservation graph;

FIG. 19 is a schematic diagram of a Melbourne-Wübbena bias processor inaccordance with some embodiments of the invention;

FIG. 20A is a schematic diagram of a Melbourne-Wübbena bias processor inaccordance with some embodiments of the invention;

FIG. 20B is a schematic diagram of a Melbourne-Wübbena bias processor inaccordance with some embodiments of the invention;

FIG. 21A is a schematic diagram of a Melbourne-Wübbena bias processor inaccordance with some embodiments of the invention;

FIG. 21B is a schematic diagram of a Melbourne-Wübbena filtering processin accordance with some embodiments of the invention;

FIG. 21C is a schematic diagram of a Melbourne-Wübbena filtering processin accordance with some embodiments of the invention;

FIG. 21D is a schematic diagram of a Melbourne-Wübbena filtering processin accordance with some embodiments of the invention;

FIG. 22A is a schematic diagram of a Melbourne-Wübbena bias processor inaccordance with some embodiments of the invention;

FIG. 22B illustrates the effect of shifting biases in accordance withsome embodiments of the invention;

FIG. 22C is a schematic diagram of a Melbourne-Wübbena bias processor inaccordance with some embodiments of the invention;

FIG. 23A is a schematic diagram of the startup of an orbit processor inaccordance with some embodiments of the invention;

FIG. 23B is a schematic diagram of an orbit processor in accordance withsome embodiments of the invention;

FIG. 23C is a schematic diagram of an orbit mapper of an orbit processorin accordance with some embodiments of the invention;

FIG. 23D is a schematic diagram of an orbit mapper of an orbit processorin accordance with some embodiments of the invention;

FIG. 24 is a timing diagram of code-leveled clock processing inaccordance with some embodiments of the invention;

FIG. 25A is a schematic diagram of a high-rate code-leveled satelliteclock processor in accordance with some embodiments of the invention;

FIG. 25B is a schematic diagram of a high-rate code-leveled satelliteclock processor in accordance with some embodiments of the invention;

FIG. 25C is a schematic diagram of a high-rate code-leveled satelliteclock processor in accordance with some embodiments of the invention;

FIG. 26 is a schematic diagram of a high-rate phase-leveled satelliteclock processor in accordance with some embodiments of the invention;

FIG. 27A is a schematic diagram of a high-rate phase-leveled satelliteclock processor in accordance with some embodiments of the invention;

FIG. 27B is a schematic diagram of a high-rate phase-leveled satelliteclock processor in accordance with some embodiments of the invention;

FIG. 27C is a schematic diagram of a high-rate phase-leveled satelliteclock processor in accordance with some embodiments of the invention;

FIG. 28 is a schematic diagram of a high-rate phase-leveled satelliteclock processor in accordance with some embodiments of the invention;

FIG. 29 is a schematic diagram of a high-rate phase-leveled satelliteclock processor in accordance with some embodiments of the invention;

FIG. 30 is a schematic diagram of a high-rate phase-leveled satelliteclock processor in accordance with some embodiments of the invention;

FIG. 31 is a schematic diagram of a high-rate phase-leveled satelliteclock processor in accordance with some embodiments of the invention;

FIG. 32 is a schematic diagram of a network processor computer system inaccordance with some embodiments of the invention;

FIG. 33 is a simplified schematic diagram of an integrated GNSS receiversystem in accordance with some embodiments of the invention;

FIG. 34 is a schematic diagram of a GNSS rover process with synthesizedbase station data in accordance with some embodiments of the invention;

FIG. 35 depicts observation clock prediction in accordance with someembodiments of the invention;

FIG. 36 is a schematic diagram of a process for generating synthesizedbase station data in accordance with some embodiments of the invention;

FIG. 37 is a schematic diagram of an alternate GNSS rover process withsynthesized base station data in accordance with some embodiments of theinvention;

FIG. 38 is a simplified schematic diagram of a GNSS rover process withsynthesized base station data in accordance with some embodiments of theinvention;

FIG. 39 is a timing diagram of a low-latency GNSS rover process withsynthesized base station data in accordance with some embodiments of theinvention;

FIG. 40 is a timing diagram of a high-accuracy GNSS rover process withsynthesized base station data in accordance with some embodiments of theinvention;

FIG. 41 is a schematic diagram of an alternate GNSS rover process withsynthesized base station data in accordance with some embodiments of theinvention;

FIG. 42 depicts performance of a GNSS rover process with ambiguityfixing in accordance with some embodiments of the invention in relationto a GNSS rover process without ambiguity fixing;

FIG. 43 is a schematic diagram of a GNSS rover process with ambiguityfixing in accordance with some embodiments of the invention;

FIG. 44 is a schematic diagram of a GNSS rover process with ambiguityfixing in accordance with some embodiments of the invention;

FIG. 45 is a schematic diagram of a GNSS rover process with ambiguityfixing in accordance with some embodiments of the invention;

FIG. 46 is a schematic diagram of a GNSS rover process with ambiguityfixing in accordance with some embodiments of the invention;

FIG. 47 is a schematic diagram of a GNSS rover process with ambiguityfixing in accordance with some embodiments of the invention;

FIG. 48 is a schematic diagram of a GNSS rover process with ambiguityfixing in accordance with some embodiments of the invention;

FIG. 49 is a schematic diagram of a GNSS rover process with ambiguityfixing in accordance with some embodiments of the invention;

FIG. 50 is a schematic diagram of a GNSS rover process with ambiguityfixing in accordance with some embodiments of the invention;

FIG. 51 is a schematic diagram of a GNSS rover process with ambiguityfixing in accordance with some embodiments of the invention;

FIG. 52 is a schematic diagram of a GNSS rover process with ambiguityfixing in accordance with some embodiments of the invention;

FIG. 53 is a schematic diagram of a GNSS rover process with ambiguityfixing in accordance with some embodiments of the invention;

FIG. 54 is a schematic diagram of a GNSS rover process with ambiguityfixing in accordance with some embodiments of the invention;

FIG. 55 is a schematic diagram of a GNSS rover process with ambiguityfixing in accordance with some embodiments of the invention;

FIG. 56 is a schematic diagram of a GNSS rover process with ambiguityfixing in accordance with some embodiments of the invention; and

FIG. 57 is a schematic diagram of a GNSS rover process with ambiguityfixing in accordance with some embodiments of the invention.

DETAILED DESCRIPTION

Part 1: System Overview

Global Navigation Satellite Systems (GNSS) include GPS, Galileo,Glonass, Compass and other similar positioning systems. While theexamples given here are directed to GPS processing the principles areapplicable to any such positioning system.

Definition of Real time: In this document the term “Real time” ismentioned several times. In the scope of the inventions covered by thefollowing embodiments this term means that there is an action (e.g.,data is processed, results are computed) as soon the requiredinformation for that action is available. Therefore, certain latencyexists, and it depends on different aspects depending on the componentof the system. The required information for the application covered inthis document is usually GNSS data, and/or GNSS corrections, asdescribed below.

The network processors running in real time are able to provide resultsfor one epoch of data from a network of monitoring receivers after: (1a)The data is collected by each of the monitoring receivers (typicallyless than 1 msec); (1b) The data is transmitted from each receiver tothe processing center (typically less than 2 sec); (1c) The data isprocessed by the processor. The computation of the results by thenetwork processors typically takes between 0.5 and 5 seconds dependingon the processor type, and amount of data to be used.

It is usual that data that do not follow certain restrictions intransmission delay (e.g., 3 sec) are rejected or buffered and thereforenot immediately used for the current epoch update. This avoids theenlargement of the latency of the system in case one or more stationsare transmitting data with an unacceptable amount of delay.

A rover receiver running in real time is able to provide results for oneepoch of data after the data is collected by receiver (typically lessthan 1 msec) and: (2a) The correction data is generated by theprocessing center (see 1a, 1b, 1c); (2b) The correction data (ifrequired) is received from the processing center (typically less than 5sec); (2c) The data is processed (typically less than 1 msec).

To avoid or minimize the effect of data latency caused by (2a) and (2b),a delta phase approach can be used so updated receiver positions can becomputed (typically in less than 1 msec) immediately after the data iscollected and with correction data streams. The delta phase approach isdescribed for example in U.S. Pat. No. 7,576,690 granted Aug. 18, 2009to U. Vollath.

FIG. 1 and FIG. 2 show high level views of a system 100 in accordancewith some embodiments of the invention. Reference stations of aworldwide tracking network, such as reference stations 105, 110, . . .115, are distributed about the Earth. The position of each referencestation is known very precisely, e.g., within less than 2 cm. Eachreference station is equipped with an antenna and tracks the GNSSsignals transmitted by the satellites in view at that station, such asGNS satellites 120, 125, . . . 130. The GNSS signals have codesmodulated on each of two or more carrier frequencies. Each referencestation acquires GNSS data 205 representing, for each satellite in viewat each epoch, carrier-phase (carrier) observations 210 of at least twocarriers, and pseudorange (code) observations 215 of the respectivecodes modulated on at least two carriers. The reference stations alsoobtain the almanac and ephemerides 220 of the satellites from thesatellite signals. The almanac contains the rough position of allsatellites of the GNSS, while the so-called broadcast ephemeridesprovide more precise predictions (ca. 1 m) of the satellites' positionsand the satellites' clock error (ca. 1.5 m) over specific timeintervals.

GNSS data collected at the reference stations is transmitted viacommunications channels 135 to a network processor 140. Networkprocessor 140 uses the GNSS data from the reference stations with otherinformation to generate a correction message containing precisesatellite position and clock data, as detailed below. The correctionmessage is transmitted for use by any number of GNSS rover receivers.The correction message is transmitted as shown in FIG. 1 via an uplink150 and communications satellite 155 for broadcast over a wide area; anyother suitable transmission medium may be used including but not limitedto radio broadcast or mobile telephone link. Rover 160 is example of aGNSS rover receiver having a GNSS antenna 165 for receiving and trackingthe signals of GNSS satellites in view at its location, and optionallyhaving a communications antenna 170. Depending on the transmission bandof the correction message, it can be received by rover 160 via GNSSantenna 165 or communications antenna 170.

Part 2: Network Architecture

FIG. 3 is a schematic diagram showing principal components of theprocess flow 300 of a network processor 140 in accordance with someembodiments of the invention. GNSS data from the global network ofreference stations is supplied without corrections as GNSS data 305 orafter correction by an optional data corrector 310 as corrected GNSSdata 315, to four processors: a standard clock processor 320, aMelbourne-Wübbena (MW) bias processor 325, an orbit processor 330, and aphase clock processor 335.

Data corrector 310 optionally analyzes the raw GNSS data 305 from eachreference station to check for quality of the received observations and,where possible, to correct the data for cycle slips, which are jumps inthe carrier-phase observations occurring, e.g., each time the receiverhas a loss of lock. Commercially-available reference stations typicallydetect cycle slips and flag the data accordingly. Cycle slip detectionand correction techniques are summarized, for example, in G. Seeber,SATELLITE GEODESY, 2^(nd) Ed. (2003) at pages 277-281. Data corrector310 optionally applies other corrections. Though not all corrections areneeded for all the processors, they do no harm if applied to the data.For example as described below some processors use a linear combinationof code and carrier observations in which some uncorrected errors arecanceled in forming the combinations.

Observations are acquired epoch by epoch at each reference station andtransmitted with time tags to the network processor 140. For somestations the observations arrive delayed. This delay can range betweenmilliseconds and minutes. Therefore an optional synchronizer 318collects the data of the corrected reference station data within apredefined time span and passes the observations for each epoch as a setto the processor. This allows data arriving with a reasonable delay tobe included in an epoch of data.

The MW bias processor 325 takes either uncorrected GNSS data 305 orcorrected GNSS data 315 as input, since it uses the Melbourne-Wübbenalinear combination which cancels out all but the ambiguities and thebiases of the phase and code observations. Thus only receiver andsatellite antenna corrections are important for the widelane processor325. Based on this linear combination, one MW bias per satellite and onewidelane ambiguity per receiver-satellite pairing are computed. Thebiases are smooth (not noisy) and exhibit only some sub-daily low-ratevariations. The widelane ambiguities are constant and can be used aslong as no cycle slip occurs in the observations on the respectivesatellite-receiver link. Thus the bias estimation is not very timecritical and can be run, e.g., with a 15 minute update rate. This isadvantageous because the computation time grows with the third power ofthe number of stations and satellites. As an example, the computationtime for a reasonable network with 80 stations can be about 15 seconds.The values of fixed widelane ambiguities 340 and/or widelane biases 345are optionally used in the orbit processor 330 and/or the phase clockprocessor 335, and/or are supplied to a scheduler 355. MW bias processor325 is described in detail in Part 7 below.

Some embodiments of orbit processor 330 are based on aprediction-correction strategy. Using a precise force model and startingwith an initial guess of the unknown values of the satellite'sparameters (initial position, initial velocity and dynamic force modelparameters), the orbit of each satellite is predicted by integration ofthe satellite's nonlinear dynamic system. The sensitivity matrixcontaining the partial derivatives of the current position to theunknown parameters is computed at the same time. Sensitivities of theinitial satellite state are computed at the same time for the wholeprediction. That is, starting with a prediction for the unknownparameters, the differential equation system is solved, integrating theorbit to the current time or into the future. This prediction can belinearized into the direction of the unknown parameters. Thus thepartial derivatives (sensitivities) serve as a measure of the size ofthe change in the current satellite states if the unknown parameters arechanged, or vice versa.

In some embodiments these partial derivatives are used in a Kalmanfilter to improve the initial guess by projecting the GNSS observationsto the satellite's unknown parameters. This precise initial stateestimate is used to again integrate the satellite's dynamic system anddetermine a precise orbit. A time update of the initial satellite stateto the current epoch is performed from time to time. In someembodiments, ionospheric-free ambiguities are also states of the Kalmanfilter. The fixed widelane ambiguity values 340 are used to fix theionospheric-free ambiguities of the orbit processor 330 to enhance theaccuracy of the estimated orbits. A satellite orbit is very smooth andcan be predicted for minutes and hours. The precise orbit predictions350 are optionally forwarded to the standard clock processor 320 and tothe phase clock processor 335 as well as to a scheduler 355.

Ultra-rapid orbits 360, such as IGU orbits provided by the InternationalGNSS Service (IGS), can be used as an alternative to the precise orbitpredictions 355. The IGU orbits are updated four times a day and areavailable with a three hour delay.

Standard clock processor 320 computes code-leveled satellite clocks 360(also called standard satellite clocks), using GNSS data 305 orcorrected GNSS data 315 and using precise orbit predictions 355 orultra-rapid orbits 365. Code-leveled means that the clocks aresufficient for use with ionospheric-free code observations, but not withcarrier-phase observations, because the code-leveled clocks do notpreserve the integer nature of the ambiguities. The code-leveled clocks360 computed by standard clock processor 320 represent clock-errordifferences between satellites. The standard clock processor 320 usesthe clock errors of the broadcast ephemerides as pseudo observations andsteers the estimated clocks to GPS time so that they can be used tocompute, e.g., the exact time of transmission of a satellite's signal.The clock errors change rapidly, but for the use with code measurements,which are quite noisy, an accuracy of some centimeter is enough. Thus a“low rate” update rate of 30 seconds to 60 seconds is adequate. This isadvantageous because computation time grows with the third power ofnumber of stations and satellites. The standard clock processor 325 alsodetermines troposphere zenith delays 365 as a byproduct of theestimation process. The troposphere zenith delays and the code-leveledclocks are sent to the phase clock processor 335. Standard clockprocessor 320 is described in detail in Part 6 below.

The phase clock processor 335 optionally uses the fixed widelaneambiguities 340 and/or MW biases 345 from widelane processor 325together with the troposphere zenith delays 365 and the precise orbits350 or IGU orbits 360 to estimate single-differenced clock errors andnarrowlane ambiguities for each pairing of satellites. Thesingle-differenced clock errors and narrowlane ambiguities are combinedto obtain single-differenced phase-leveled clock errors 370 for eachsatellite (except for a reference satellite) which aresingle-differenced relative to the reference satellite. The low-ratecode leveled clocks 360, the troposphere zenith delays 365 and theprecise orbits 350 or IGU orbits 360 are used to estimate high-ratecode-leveled clocks 375. Here, the computational effort is linear withthe number of stations and to the third power with the number ofsatellites. The rapidly-changing phase-leveled clocks 370 andcode-leveled clocks 375 are available, for example, with a delay of 0.1sec-0.2 sec. The high-rate phase-leveled clocks 370 and the high-ratecode-leveled clocks 375 are sent to the scheduler 355 together with theMW biases 340. Phase clock processor 340 is described in detail in Part9 below.

Scheduler 355 receives the orbits (precise orbits 350 or IGU orbits360), the MW biases 340, the high-rate phase-leveled clocks 370 and thehigh-rate code-leveled clock 375. Scheduler 355 packs these together andforwards the packed orbits and clocks and biases 380 to a messageencoder 385 which prepares a correction message 390 in compressed formatfor transmission to the rover. Transmission to a rover takes for exampleabout 10 sec-20 sec over a satellite link, but can also be done using amobile phone or a direct Internet connection or other suitablecommunication link.

Part 3: Observation Data Corrector

FIG. 4 is a schematic diagram of data correction in accordance with someembodiments of the invention. Optional observation corrector 310corrects the GNSS signals collected at a reference station fordisplacements of the station due to centrifugal, gyroscopic andgravitational forces acting on the Earth, the location of the station'santenna phase center relative to the station's antenna mounting point,the location of the satellite's antenna phase center relative to thesatellite's center of mass given by the satellite's orbit, andvariations of those phase centers depending on the alignment of thestation's antenna and the satellite's antenna.

The main contributors to station displacements are solid Earth tides upto 500 mm, ocean tidal loadings up to 100 mm, and pole tides up to 10mm. All of these depend on where the station is located. Moredescription is found in McCarthy, D. D., Petit, G. (eds.), IERSConventions (2003), IERS Technical Note No. 32, and references citedtherein.

Ocean tides caused by the forces of astronomical bodies—mainly themoon—acting on the Earth's loose masses, also cause the Earth's tectonicplates to be lifted and lowered. This well-known effect shows up asrecurring variations of the reference stations' locations. The solidEarth tides are optionally computed for network processing as well asfor rover processing, as the effect should not be neglected and thecomputational effort is minor.

The second largest effect is the deformation of the Earth's tectonicplates due to the load of the oceans varying over time with the tides.Ocean tide loading parameters used to quickly compute the displacementof a station over time depend on the location of the station. Thecomputational effort to derive these parameters is quite high. They canbe computed for a given location, using any of the well-known modelsavailable at the online ocean-tide-loading service provided by theOnsala Space Observatory Ocean, http://www.oso.chalmers.se/˜loading/,Chalmers: Onsala Space Observatory, 2009. The lower accuracy parameters,e.g., from interpolation of a precomputed grid, are sufficient for theapplications discussed here.

The smallest effect mentioned here is that due to pole tides. Thisdisplacement is due to the lift of a tectonic plate caused by thecentrifugal and gyroscopic effects generated by the polar motion of theEarth. Earth orientation parameters are used for this computation. Theseare updated regularly at the International Earth Rotation & ReferenceSystem Service, International Earth Rotation & Reference System Service,http://hpiers.obspm.fr/, L′Observatoire de Paris, 2009, and are noteasily computed. This minor effect is therefore optionally neglected inthe rover processing.

Absolute calibrated antenna models are used to compute the offsets andvariations of receiver and satellite antenna phase centers. Adescription is found at J. Kouba, A Guide to Using International GPSService (IGS) Products, Geoodetic Survey Division Natural ResourcesCanada, February 2003. Calibration data collected by the IGS is madeavailable in antex files at http://igscb.ipl.nasa.gov/, 2009; satelliteantenna offset information is found for example in the IGS absoluteantenna file igs05.atx.

Another effect is the antenna phase wind-up. If a receiver antenna ismoving relative to the sender antenna the recorded data shows a phaseshift. If this effect is neglected, a full turn of the satellite aroundthe sending axis will cause an error of one cycle in the carrier-phasedetected at the receiver. Since the satellite's orientation relative tothe receiver is well known most of the time, this effect can be modeledas described in Wu J. T., Hajj G. A., Bertiger W. I., & Lichten S. M.,Effects of antenna orientation on GPS carrier phase, MANUSCRIPTAGEODAETICA, Vol. 18, pp. 91-98 (1993).

The relative movement of the station and the satellite is mainly due tothe orbiting satellite. If a satellite is eclipsing—this means thesatellites orbit crosses the Earth's shadow—additional turns of thesatellite around its sending axis are possible. For example, GPS BlockIIA satellites have a noon turn and a shadow crossing maneuver, whileGPS Block IIR satellites have a noon turn and a midnight turn. If thesun, the Earth and the satellite are nearly collinear it is hard tocompute the direction of the turn maneuvers, and an incorrect directionwill cause an error in the carrier-phase of one cycle. The satellite'syaw attitude influences the phase wind-up and the satellite antennacorrections. More detailed descriptions are found in Kouba, J., Asimplified yaw-attitude model for eclipsing GPS satellites, GPSSOLUTIONS (2008) and Bar-Sever, Y. E., A new model for GPS yaw attitude,JOURNAL OF GEODESY, Vol. 70, pp. 714-723 (1996).

In the case of only using phase observations, the effect of an unmodeledsatellite turn maneuver can not be separated from the satellite clock.Thus in a phase clock error estimation the effect of the turn maneuveris included in the estimated satellite clock error. If a rover usesthose clocks it must not correct for satellite turn maneuver either.

The sun position is needed to compute the satellite's body-fixedcoordinate frame, since the x axis is defined by the cross product ofthe satellite's position and the sun's position. This coordinate systemis used to compute the yaw attitude, the satellite's antenna correction(offset and variations, mapped into sine of sight) and the phase wind-upcorrection. The moon's position is also needed for the solid Earthtides. How to compute the position of the sun and the moon is found, forexample, in Seidelmann, P. K. (ed.), Explanatory Supplement to theAstronomical Almanac, University Science Books, U.S. (1992).

Further corrections can also be applied, though these are of only minorinterest for the positioning accuracy level demanded by the marketplace.

Additional effects as corrections for relativistic effects, ionosphericand troposphere delays do not need to be considered in the optional datacorrector 310. Relativistic corrections are usually applied to thesatellite clocks. The major first order effect due to the ionosphere iseliminated using an ionospheric free combination of the GNSSobservations, and the effect due to the troposphere is in someembodiments partly modeled and partly estimated.

Part 4: Forming Linear Combinations

4.1 Basic Modeling Equations

For code P_(i,km) ^(j) and carrier phase Φ_(i,km) ^(j) observationsbetween receiver i and satellite j on frequency band k and modulationtype m the following observation model is assumed that relates theobservations to certain physical quantities,P _(i,km) ^(j)=ρ_(i) ^(j) +cΔt _(i) −cΔt ^(j) +T _(i) ^(j) +I _(P,i,k)^(j) +b _(P,i,km) −b _(P,km) ^(j) +m _(P,i,km) ^(j)+ε_(P,i,km)^(j).  (1)Φ_(i,km) ^(j)=ρ_(i) ^(j) +cΔt _(i) −cΔt ^(j) +T _(i) ^(j) +I _(Φ,i,k)^(j) +b _(Φ,i,k) −b _(Φ,k) ^(j)+λ_(k) N _(i,k) ^(j) +m _(Φ,i,km)^(j)+ε_(Φ,i,km) ^(j).  (2)with

-   ρ_(i) ^(j) geometrical range from satellite j to receiver i-   c speed of light-   Δt_(i) receiver i clock error-   Δt^(j) satellite j clock error-   T_(i) ^(j) tropospheric delay from satellite j to receiver i

$I_{P,i,k}^{j} = {\frac{I_{1i}^{j}}{f_{k}^{2}} + \frac{2I_{2i}^{j}}{f_{k}^{3}} + \frac{3I_{3i}^{j}}{f_{k}^{4}}}$

-   code ionospheric delay on frequency f_(k)

$I_{\Phi,i,k}^{j} = {{- \frac{I_{1i}^{j}}{f_{k}^{2}}} - \frac{I_{2i}^{j}}{f_{k}^{3}} - \frac{I_{3i}^{j}}{f_{k}^{4}}}$

-   carrier phase ionospheric delay on frequency f_(k)-   b_(P,i,km) code receiver bias-   b_(P,km) ^(j) code satellite bias-   b_(Φi,k) phase receiver bias (independent of modulation type m)-   b_(Φ,k) ^(j) phase satellite bias (independent of modulation type m)-   N_(i,k) ^(j) integer ambiguity term from satellite j to receiver i    on wavelength λ_(k)-   m_(P,i,km) ^(j) code multipath from satellite j to receiver i-   m_(Φ,i,km) ^(j) phase multipath from satellite j to receiver i-   ε_(P,i,km) ^(j) code random noise term-   ε_(Φ,i,km) ^(j) phase random noise term    The modulation type dependency in the phase observation can be    suppressed by assuming that the different phase signals on a    frequency band are already shifted to a common base inside the    receiver, e.g. L2C is assumed to be shifted by −0.25 cycles to    compensate the 90 degrees rotation of the quadrature phase on which    it is modulated. However, noise and multipath terms (that are    usually not modeled) still have a different contribution to the    phase observation for different modulation types.

Examples of different modulation types (also called code types) are incase of GPS L1C/A, L1P, L1C on L1-frequency band and L2C, L2P onL2-frequency band and in case of Glonass L1C/A, L1P and L2C/A, L2P. Forthe Glonass satellite system, wavelength λ_(k) and frequency f_(k) alsodepend on a satellite specific frequency channel number so that thenotation could be extended to λ_(k) ^((j)) and f_(k) ^((j)). Inaddition, especially the code receiver biases b_(P,i,km) also have achannel and therefore satellite dependency (as can be seen in azero-baseline processing with some averaging over time so that P_(i) ₁_(i) ₂ _(,km) ^(j)=b_(P,i,km) ^(j)). Therefore a more preciseformulation for the code receiver bias would be b_(P,i,km)^(j)=b_(P,i,km)+Δb_(P,i,km) ^(j).

The symbol Φ used here for carrier phase observations, is also used forthe time transition matrix in the Kalman filter context. For both cases,Φ is the standard symbol used in the scientific literature and weadopted this notation. The meaning of Φ will be always clear from thecontext.

In the following we neglect the second order

$\frac{I_{2\; i}^{j}}{f_{k}^{3}}$and third order

$\frac{I_{3\; i}^{j}}{f_{k}^{4}}$ionospheric terms that are typically in the range of less than 2 cm(Morton, van Graas, Zhou, & Herdtner, 2008), (Datta-Barua, Walter,Blanch, & Enge, 2007). In this way,

$I_{P,i,k}^{j} = {\frac{I_{i}^{j}}{f_{k}^{2}} = {- I_{\Phi,i,k}^{j}}}$with I_(i) ^(j):=I_(1i) ^(j). Only under very severe geomagnetic activeconditions the second and third order terms can reach tens ofcentimeters. However, these conditions occur only for a few days in manyyears. The higher order ionospheric terms can be taken into account byionospheric models based on the Appleton-Hartree equation that relatesthe phase index of refraction of a right hand circularly polarized wavepropagating through the ionosphere to the wave frequency f_(k), theelectron density and the earth magnetic field. Approximations to theAppleton-Hartree equation allow to relate the parameters I_(2i) ^(j),I_(3i) ^(j) of the second and third order ionospheric terms to the firstorder ionospheric estimation parameter I_(i) ^(j):=I_(1i) ^(j) that is ameasure of the total electron content along the signal propagation path.Thus higher order ionospheric terms can be corrected on base ofobservation data on at least two frequencies.

In the following we will often talk about ionospheric-free (IF) linearcombinations. However, notice that these linear combinations only cancelthe first order ionospheric term and are thus not completelyionospheric-free.

Linear Combinations of Observations

By combining several code P_(i,km) ^(j) and carrier phase Φ_(i,km) ^(j)observations in a linear way

$\begin{matrix}{{{LC} = {{\sum\limits_{i,j,k,m}{a_{P,i,{km}}^{j}P_{i,{km}}^{j}}} + {a_{\Phi,i,{km}}^{j}\Phi_{i,{km}}^{j}\mspace{14mu}{with}}}}{a_{P,i,{km}}^{j},{a_{\Phi,i,{km}}^{j} \in {R\mspace{14mu}{for}\mspace{14mu}{all}\mspace{14mu} i}},j,k,m}} & (3)\end{matrix}$some of the physical quantities can be eliminated from the linearcombination LC so that these quantities do not have to be estimated ifthe linear combination is used as the observation input for anestimator. In this way some linear combinations are of specialimportance.

Single difference (SD) observations between two satellites j₁ and j₂eliminate all quantities that are not satellite dependent, i.e. that donot have a satellite index j.

Defining X^(j) ¹ ^(j) ² :=X^(j) ² −X^(j) ¹ , the between satellite SDobservations are formally obtained by substituting each index j by j₁j₂and ignoring all terms without a satellite index jP _(i,km) ^(j) ¹ ^(j) ² =ρ_(i) ^(j) ¹ ^(j) ² −cΔt ^(j) ¹ ^(j) ² +T _(i)^(j) ¹ ^(j) ² +I _(P,i,k) ^(j) ¹ ^(j) ² −b _(P,km) ^(j) ¹ ^(j) ² +m_(P,i,km) ^(j) ¹ ^(j) ² +ε_(P,i,km) ^(j) ¹ ^(j) ² .  (4)Φ_(i,km) ^(j) ¹ ^(j) ² =ρ_(i) ^(j) ¹ ^(j) ² −cΔt ^(j) ¹ ^(j) ² +T _(i)^(j) ¹ ^(j) ² +I _(Φ,i,k) ^(j) ¹ ^(j) ² −b _(Φ,km) ^(j) ¹ ^(j) ² +m_(Φ,i,km) ^(j) ¹ ^(j) ² +ε_(Φ,i,km) ^(j) ¹ ^(j) ² .  (5)In this way the receiver clock and receiver bias terms have beeneliminated in the linear combination.

In the same way single difference observations between two receivers i₁and i₂ eliminate all quantities that are not receiver dependent, i.e.that have no receiver index i.

By generating the difference between two receivers i, and i₂ on thebetween satellite single difference observations (4) and (5), doubledifference (DD) observations are obtained that also eliminate allreceiver dependent terms from (4) and (5).

Defining X_(i) ₁ _(i) ₂ ^(j) ¹ ^(j) ² :=X_(i) ₂ ^(j) ¹ ^(j) ² −X_(i) ₁^(j) ¹ ^(j) ² =(X_(i) ₂ ^(j) ² −X_(i) ₂ ^(j) ¹ )−(X_(i) ₁ ^(j) ² −X_(i)₁ ^(j) ¹ ), the DD observations are formally obtained from (4) and (5)by substituting each index i by i₁i₂ and ignoring all terms without areceiver index iP _(i) ₁ _(i) ₂ _(,km) ^(j) ¹ ^(j) ² =ρ_(i) ₁ _(i) ₂ ^(j) ¹ ^(j) ² +T_(i) ₁ _(i) ₂ ^(j) ¹ ^(j) ² +I _(P,i) ₁ _(i) ₂ _(,k) ^(j) ¹ ^(j) ² +m_(P,i) ₁ _(i) ₂ _(,km) ^(j) ¹ ^(j) ² +ε_(P,i) ₁ _(i) ₂ _(,km) ^(j) ¹^(j) ² .  (6)Φ_(i) ₁ _(i) ₂ _(,km) ^(j) ¹ ^(j) ² =ρ_(i) ₁ _(i) ₂ ^(j) ¹ ^(j) ² +T_(i) ₁ _(i) ₂ ^(j) ¹ ^(j) ² +I _(Φ,i) ₁ _(i) ₂ _(,k) ^(j) ¹ ^(j) ²+λ_(k) N _(i) ₁ _(i) ₂ _(,k) ^(j) ¹ ^(j) ² +m _(Φ,i) ₁ _(i) ₂ _(,km)^(j) ¹ ^(j) ² +ε_(Φ,i) ₁ _(i) ₂ _(,km) ^(j) ¹ ^(j) ² .  (7)In this way also the satellite clock and the satellite biases have beeneliminated in the linear combination.

In the following we assume that all code observations P_(i,km) ^(j)correspond to the same modulation type and that all phase observationsΦ_(i,km) ^(j) correspond to the same observation type that may differfrom the modulation type of the code observations. Since the modulationtype dependency for the phase observations occurs only in the unmodeledmultipath and random noise terms, in this way the modulation type indexm can be suppressed.

For our purposes two linear combinations that cancel the first orderionospheric delay

$\frac{I_{i}^{j}}{f_{k}^{2}}$in different ways are of special importance, the iono-free linearcombination for code and carrier phase and the Melbourne-Wübbena (MW)linear combination Φ_(i,WL) ^(j)−P_(i,NL) ^(j) consisting of thewidelane (WL) carrier phase

$\frac{\Phi_{i,{WL}}^{j}}{\lambda_{WL}}:={\frac{\Phi_{i,1}^{j}}{\lambda_{1}} - \frac{\Phi_{i,2}^{j}}{\lambda_{2}}}$and narrowlane (NL) code

$\frac{P_{i,{NL}}^{j}}{\lambda_{NL}}:={\frac{P_{i,1}^{j}}{\lambda_{1}} + \frac{P_{i,2}^{j}}{\lambda_{2}}}$observations with wavelengths

$\lambda_{WL} = {\frac{c}{f_{WL}}:=\frac{c}{f_{1} - f_{2}}}$and

${\lambda_{NL} = {\frac{c}{f_{NL}}:=\frac{c}{f_{1} + f_{2}}}},$(Melbourne, 1985), (Wübbena, 1985),

$\begin{matrix}{P_{i,{NL}}^{j} = {\rho_{i}^{j} + {c\;\Delta\; t_{i}} - {c\;\Delta\; t_{i}} - {c\;\Delta\; t^{j}} + T_{i}^{j} + {\lambda_{NL}\left( {\frac{b_{P,i,1}}{\lambda_{1}} + \frac{b_{P,i,2}}{\lambda_{2}}} \right)} - {\lambda_{NL}\left( {\frac{b_{P,1}^{j}}{\lambda_{1}} + \frac{b_{P,2}^{j}}{\lambda_{2}}} \right)} + {\lambda_{NL}\left( {\frac{I_{i}^{j}}{\lambda_{1}f_{1}^{2}} + \frac{I_{i}^{j}}{\lambda_{2}f_{2}^{2}}} \right)} + {\lambda_{NL}\left( {\frac{m_{P,i,1}^{j} + ɛ_{P,i,1}^{j}}{\lambda_{1}} + \frac{m_{P,i,2}^{j} + ɛ_{P,i,2}^{j}}{\lambda_{2}}} \right)}}} & (8) \\{\Phi_{i,{WL}}^{j} = {\rho_{i}^{j} + {c\;\Delta\; t_{i}} - {c\;\Delta\; t^{j}} + T_{i}^{j} + {\lambda_{WL}\left( {\frac{b_{\Phi,i,1}}{\lambda_{1}} - \frac{b_{\Phi,i,2}}{\lambda_{2}}} \right)} - {\lambda_{WL}\left( {\frac{b_{\Phi,1}^{j}}{\lambda_{1}} - \frac{b_{\Phi,2}^{j}}{\lambda_{2}}} \right)} - {\lambda_{WL}\left( {\frac{I_{i}^{j}}{\lambda_{1}f_{1}^{2}} - \frac{I_{i}^{j}}{\lambda_{2}f_{2}^{2}}} \right)} + {\lambda_{WL}\underset{\underset{= {:N_{i,{WL}}^{j}}}{︸}}{\left( {N_{i\; 1}^{j} - N_{i\; 2}^{j}} \right)}} + {\lambda_{WL}\left( {\frac{m_{\Phi,i,1}^{j} + ɛ_{\Phi,i,1}^{j}}{\lambda_{1}} - \frac{m_{\Phi,i,2}^{j} + ɛ_{\Phi,i,2}^{j}}{\lambda_{2}}} \right)}}} & (9)\end{matrix}$so that

$\begin{matrix}\begin{matrix}{{\Phi_{i,{WL}}^{j} - P_{i,{NL}}^{j}} = {\underset{\underset{= {:b_{i,{MW}}}}{︸}}{{\lambda_{WL}\left( {\frac{b_{\Phi,i,1}}{\lambda_{1}} - \frac{b_{\Phi,i,2}}{\lambda_{2}}} \right)} - {\lambda_{NL}\left( {\frac{b_{P,i,1}}{\lambda_{1}} + \frac{b_{P,i,2}}{\lambda_{2}}} \right)}} + -}} \\{\underset{\underset{= {:b_{MW}^{j}}}{︸}}{\left\lbrack {{\lambda_{WL}\left( {\frac{b_{\Phi,1}^{j}}{\lambda_{1}} - \frac{b_{\Phi,2}^{j}}{\lambda_{2}}} \right)} - {\lambda_{NL}\left( {\frac{b_{P,1}^{j}}{\lambda_{1}} + \frac{b_{P,2}^{j}}{\lambda_{2}}} \right)}} \right\rbrack} +} \\{\lambda_{WL}{N_{i,{WL}}^{j}++}} \\{\underset{\underset{= {:m_{i,{MW}}^{j}}}{︸}}{{\lambda_{WL}\left( {\frac{m_{\Phi,i,1}^{j}}{\lambda_{1}} - \frac{m_{\Phi,i,2}^{j}}{\lambda_{2}}} \right)} - {\lambda_{NL}\left( {\frac{m_{P,i,1}^{j}}{\lambda_{1}} + \frac{m_{P,i,2}^{j}}{\lambda_{2}}} \right)}}++} \\{\underset{\underset{= {:ɛ_{i,{MW}}^{j}}}{︸}}{{\lambda_{WL}\left( {\frac{ɛ_{\Phi,i,1}^{j}}{\lambda_{1}} - \frac{ɛ_{\Phi,i,2}^{j}}{\lambda_{2}}} \right)} - {\lambda_{NL}\left( {\frac{ɛ_{P,i,1}^{j}}{\lambda_{1}} + \frac{ɛ_{P,i,2}^{j}}{\lambda_{2}}} \right)}} +} \\{= {b_{i,{MW}} - b_{MW}^{j} + {\lambda_{WL}N_{i,{WL}}^{j}} + m_{i,{MW}}^{j} + ɛ_{i,{MW}}^{j}}}\end{matrix} & (10)\end{matrix}$where the ionospheric term in the WL-phase cancels with the ionosphericterm in the NL-code due to

$\begin{matrix}{{{- {\lambda_{WL}\left( {\frac{1}{\lambda_{1}f_{1}^{2}} - \frac{1}{\lambda_{2}f_{2}^{2}}} \right)}} - {\lambda_{NL}\left( {\frac{1}{\lambda_{1}f_{1}^{2}} + \frac{1}{\lambda_{2}f_{2}^{2}}} \right)}} = {{{- \frac{c}{f_{1} - f_{2}}}\left( {\frac{c}{f_{1}} - \frac{c}{f_{2}}} \right)} - {\frac{c}{f_{1} + f_{2}}\left( {\frac{c}{f_{1}} + \frac{c}{f_{2}}} \right)}}} \\{= {{{- \frac{c^{2}}{f_{1} - f_{2}}}\frac{f_{2} - f_{1}}{f_{1}f_{2}}} - {\frac{c^{2}}{f_{1} + f_{2}}\frac{f_{2} + f_{1}}{f_{1}f_{2}}}}} \\{= {{+ \frac{c^{2}}{f_{1}f_{2}}} - \frac{c^{2}}{f_{1}f_{2}}}} \\{= 0}\end{matrix}$

Neglecting the usually unmodeled multipath m_(i,MW) ^(j) and randomnoise terms ε_(i,MW) ^(j), equation (10) simplifies toΦ_(i,WL) ^(j) −P _(i,NL) ^(j) =b _(i,MW) −b _(MW) ^(j)+λ_(WL) N _(i,WL)^(j)  (11)or in a between satellite single difference (SD) version toΦ_(i,WL) ^(j) ¹ ^(j) ² −P _(i,NL) ^(j) ¹ ^(j) ² =−b _(MW) ^(j) ¹ ^(j) ²+λ_(WL) N _(i,WL) ^(j) ¹ ^(j) ²   (12)

Note that the satellite bias cancels in the double difference (DD)(between receivers and between satellites) Melbourne-Wübbena (MW)observation,Φ_(i) ₁ _(i) ₂ _(,WL) ^(j) ¹ ^(j) ² −P _(i) ₁ _(i) ₂ _(,NL) ^(j) ¹ ^(j)² =λ_(WL) N _(i) ₁ _(i) ₂ _(,WL) ^(j) ¹ ^(j) ² .  (13)Thus the DD-WL ambiguities N_(i) ₁ _(i) ₂ _(,WL) ^(j) ¹ ^(j) ² aredirectly observed by the DD-MW observations.

The iono-free linear combination on code

$P_{i,{IF}}^{j}:=\frac{{f_{1}^{2}P_{i,1}^{j}} - {f_{2}^{2}P_{i,2}^{j}}}{f_{1}^{2} - f_{2}^{2}}$and carrier phase

$\Phi_{i,{IF}}^{j}:=\frac{{f_{1}^{2}\Phi_{i,1}^{j}} - {f_{2}^{2}\Phi_{i,2}^{j}}}{f_{1}^{2} - f_{2}^{2}}$results in

$\begin{matrix}\begin{matrix}{P_{i,{IF}}^{j} = {\rho_{i}^{j} + {c\;\Delta\; t_{i}} - {c\;\Delta\; t^{j}} + T_{i}^{j} +}} \\{\underset{\underset{= {:b_{P,i,{IF}}}}{︸}}{\frac{{f_{1}^{2}b_{P,i,1}} - {f_{2}^{2}b_{P,i,2}}}{f_{1}^{2} - f_{2}^{2}}} - \underset{\underset{= {:b_{P,{IF}}^{j}}}{︸}}{\frac{{f_{1}^{2}b_{P,1}^{j}} - {f_{2}^{2}b_{P,2}^{j}}}{f_{1}^{2} - f_{2}^{2}}} +} \\{\underset{\underset{= {:m_{P,i,{IF}}^{j}}}{︸}}{\frac{{f_{1}^{2}m_{P,i,1}^{j}} - {f_{2}^{2}m_{P,i,2}^{j}}}{f_{1}^{2} - f_{2}^{2}}} - \underset{\underset{= {:ɛ_{P,i,{IF}}^{j}}}{︸}}{\frac{{f_{1}^{2}ɛ_{P,i,1}^{j}} - {f_{2}^{2}ɛ_{P,i,2}^{j}}}{f_{1}^{2} - f_{2}^{2}}} +} \\{= {\rho_{i}^{j} + {c\;\Delta\; t_{i}} - {c\;\Delta\; t^{j}} + T_{i}^{j} + b_{P,i,{IF}} - b_{P,{IF}}^{j} + m_{P,i,{IF}}^{j} + ɛ_{P,i,{IF}}^{j}}}\end{matrix} & (14) \\{and} & \; \\\begin{matrix}{\Phi_{i,{IF}}^{j} = {\rho_{i}^{j} + {c\;\Delta\; t_{i}} - {c\;\Delta\; t^{j}} + T_{i}^{j} +}} \\{\underset{\underset{= {:b_{\Phi,i,{IF}}}}{︸}}{\frac{{f_{1}^{2}b_{\Phi,i,1}} - {f_{2}^{2}b_{\Phi,i,2}}}{f_{1}^{2} - f_{2}^{2}}} - \underset{\underset{= {:b_{\Phi,{IF}}^{j}}}{︸}}{\frac{{f_{1}^{2}b_{\Phi,1}^{j}} - {f_{2}^{2}b_{P,2}^{j}}}{f_{1}^{2} - f_{2}^{2}}} +} \\{\underset{\underset{= {:{\lambda_{IF}N_{i,{IF}}^{j}}}}{︸}}{\frac{{f_{1}^{2}\lambda_{1}N_{i,1}^{j}} - {f_{2}^{2}\lambda_{2}N_{i,2}^{j}}}{f_{1}^{2} - f_{2}^{2}}} + \underset{\underset{= {:m_{\Phi,i,{IF}}^{j}}}{︸}}{\frac{{f_{1}^{2}m_{\Phi,i,1}^{j}} - {f_{2}^{2}m_{\Phi,i,2}^{j}}}{f_{1}^{2} - f_{2}^{2}}} +} \\{\underset{\underset{= {:ɛ_{\Phi,i,{IF}}^{j}}}{︸}}{\frac{{f_{1}^{2}ɛ_{\Phi,i,1}^{j}} - {f_{2}^{2}ɛ_{\Phi,i,2}^{j}}}{f_{1}^{2} - f_{2}^{2}}}} \\{= {\rho_{i}^{j} + {c\;\Delta\; t_{i}} - {c\;\Delta\; t^{j}} + T_{i}^{j} + b_{\Phi,i,{IF}} - b_{\Phi,{IF}}^{j} + {\lambda_{IF}N_{i,{IF}}^{j}} +}} \\{m_{\Phi,i,{IF}}^{j} + ɛ_{\Phi,i,{IF}}^{j}}\end{matrix} & (15)\end{matrix}$

Neglecting the usually unmodeled multipath m_(P,i,IF) ^(j), m_(Φ,i,IF)^(j) and random noise terms ε_(P,i,IF) ^(j), ε_(Φ,i,IF) ^(j), (14) and(15) simplify toP _(i,IF) ^(j)=ρ_(i) ^(j) +cΔt _(i) −cΔt ^(j) +T _(i) ^(j) +b _(P,i,IF)−b _(P,IF) ^(j).  (16)Φ_(i,IF) ^(j)=ρ_(i) ^(j) +cΔt _(i) −cΔt ^(j) +T _(i) ^(j) +b _(Φ,i,IF)−b _(Φ,IF) ^(j)+λ_(IF) N _(i,IF) ^(j).  (17)or in a between satellite single difference (SD) version toP _(i,IF) ^(j) ¹ ^(j) ² =ρ_(i) ^(j) ¹ ^(j) ² −cΔt ^(j) ¹ ^(j) ² +T _(i)^(j) ¹ ^(j) ² −b _(P,IF) ^(j) ¹ ^(j) ² .  (18)Φ_(i,IF) ^(j) ¹ ^(j) ² =ρ_(i) ^(j) ¹ ^(j) ² −cΔt ^(j) ¹ ^(j) ² +T _(i)^(j) ¹ ^(j) ² −b _(Φ,IF) ^(j) ¹ ^(j) ² λ_(IF) N _(i,IF) ^(j) ¹ ^(j) ².  (19)

The iono-free wavelength λ_(IF) just depends on the ratio of theinvolved frequencies that are listed for different GNSS in Table 1 andTable 2.

TABLE 1 GPS Galileo L1 L2 L5 E2L1E1 E5a E5b E5a/b E6 10.23 MHz 154 120115 154 115 118 116.5 125

TABLE 2 Glonass L1 L2 (1602 + k · 9/16) MHz (1246 + k · 7/16) MHz${\left( {{k = {- 7}},\;\ldots,{+ 6}} \right)\mspace{14mu}\frac{L\; 1}{L\; 2}} = \frac{9}{7}$

Defining F₁, F₂εN by

$\begin{matrix}{\left. \begin{matrix}{f_{1} = {\text{:}\mspace{11mu} F_{1}\;\gcd\;\left( {f_{1},f_{2}} \right)}} \\{f_{2} = {\text{:}\mspace{11mu} F_{2}\;{\gcd\left( {f_{1},f_{2}} \right)}}}\end{matrix}\Rightarrow\frac{f_{1}}{f_{2}} \right. = \frac{F_{1}}{F_{2}}} & (20)\end{matrix}$where gcd is an abbreviation for the greatest common divisor, it followsfor the iono-free wavelength

$\begin{matrix}\begin{matrix}{{\lambda_{IF}N_{i,{IF}}^{j}}:=\frac{{f_{1}^{2}\lambda_{1}N_{i,1}^{j}} - {f_{2}^{2}\lambda_{2}N_{i,2}^{j}}}{f_{1}^{2} - f_{2}^{2}}} \\{= {\lambda_{1}\frac{{f_{1}^{2}N_{i,1}^{j}} - {f_{2}^{2}\frac{\lambda_{2}}{\lambda_{1}}N_{i,2}^{j}}}{f_{1}^{2} - f_{2}^{2}}}} \\{= {\lambda_{2}\frac{{f_{1}^{2}N_{i,1}^{j}} - {f_{2}^{2}\frac{f_{1}}{f_{2}}N_{i,2}^{j}}}{f_{1}^{2} - f_{2}^{2}}}} \\{= {\lambda_{1}\frac{{\frac{f_{1}^{2}}{f_{2}^{2}}N_{i,1}^{j}} - {\frac{f_{1}}{f_{2}}N_{i,2}^{j}}}{\frac{f_{1}^{2}}{f_{2}^{2}} - 1}}} \\{= {\lambda_{1}\frac{{\frac{F_{1}^{2}}{F_{2}^{2}}N_{i,1}^{j}} - {\frac{F_{1}}{F_{2}}N_{i,2}^{j}}}{\frac{F_{1}^{2}}{F_{2}^{2}} - 1}}} \\{= {\lambda_{1}\frac{F_{1}}{F_{2}^{2}}\frac{{F_{1}N_{i,1}^{j}} - {F_{2}N_{i,2}^{j}}}{\frac{F_{1}^{2} - F_{2}^{2}}{F_{2}^{2}}}}} \\{= {\underset{\underset{= {:\lambda_{IF}}}{︸}}{\lambda_{1}\frac{F_{1}}{F_{2} - F_{2}^{2}}}\underset{\underset{:=N_{i,{IF}}^{j}}{︸}}{\left( {{F_{1}N_{i,1}^{j}} - {F_{2}N_{i,2}^{j}}} \right)}}}\end{matrix} & (21)\end{matrix}$

The factors F₁, F₂ are listed for different GNSS frequency combinationstogether with the resulting iono-free wavelengths in Table 3.

TABLE 3 GNSS Freq. bands F₁/F₂ λ₁/m λ_(NL)/m$\frac{\lambda_{IF}}{\lambda_{1}} = \frac{F_{1}}{F_{1}^{2} - F_{2}^{2}}$GPS L1-L2 77/60 0.1903 0.1070 0.0331 L1-L5 154/115 0.1903 0.1089 0.0147L2-L5 24/23 0.2442 0.1247 0.5106 Galileo L1-E5a 154/115 0.1903 0.10890.0147 L1-E5b 77/59 0.1903 0.1077 0.0315 L1-E6 154/125 0.1903 0.10500.019  E5b-E5a 118/115 0.2483 0.1258 0.1688 E6-E5a 25/23 0.2344 0.12210.2604 E6-E5b 125/118 0.2344 0.1206 0.0735 Glonass L1-L2 9/7$\frac{c}{\left( {1602 + {{k \cdot 9}\text{/}16}} \right) \cdot 10^{6}}$$\frac{c}{\left( {2848 + k} \right) \cdot 10^{6}}$ 0.2813

-   -   (22)

Since for most frequency combinations the iono-free wavelength λ_(IF) istoo small for reliable ambiguity resolution (the frequency combinationL2-L5 is a mentionable exception), the following relation between theiono-free ambiguity N_(i,IF) ^(j) and the widelane ambiguity N_(i,WL)^(j) is of special importance. By using the definitions

$\begin{matrix}\left. \left. \begin{matrix}{N_{i,{WL}}^{j}:={N_{i,1}^{j} - N_{i,2}^{j}}} \\{N_{i,{NL}}^{j}:={N_{i,1}^{j} + N_{i,2}^{j}}}\end{matrix} \right\}\Leftrightarrow\begin{matrix}{N_{i,1}^{j} = {\frac{1}{2}\left( {N_{i,{NL}}^{j} + N_{i,{WL}}^{j}} \right)}} \\{N_{i,2}^{j} = {\frac{1}{2}\left( {N_{i,{NL}}^{j} + N_{i,{WL}}^{j}} \right)}}\end{matrix} \right. & (23)\end{matrix}$the iono-free ambiguity term can be rewritten as

$\begin{matrix}{{{\lambda_{IF}N_{i,{IF}}^{j}}:={{{\frac{f_{1}^{2}}{f_{1}^{2} - f_{2}^{2\;}}\lambda_{1}N_{i,1}^{j}} - {\frac{f_{2}^{2}}{f_{1}^{2} - f_{2}^{2}}\lambda_{2}N_{i,2}^{j}}} = {{{\underset{\underset{{\frac{{cf}_{1}}{{({f_{1} - f_{2}})}{({f_{1} + f_{2}})}} + \frac{{cf}_{2}}{{({f_{1} - f_{2}})}{({f_{1} + f_{2}})}}} = {\frac{c}{f_{1} - f_{2}} = {:\lambda_{WL}}}}{︸}}{\left( {{\frac{f_{1}^{2}}{f_{1}^{2} - f_{2}^{2}}\frac{c}{f_{1}}} + {\frac{f_{2}^{2}}{f_{1}^{2} - f_{2}^{2}}\frac{c}{f_{2}}}} \right)}\frac{1}{2}N_{i,{WL}}^{j}} + {\underset{\underset{{\frac{{cf}_{1}}{{({f_{1} - f_{2}})}{(f_{1 + f_{2}})}} - \frac{{cf}_{2}}{{({f_{1} - f_{2}})}{({f_{1} + f_{2}})}}} = {\frac{c}{f_{1} - f_{2}} = {:\lambda_{NL}}}}{︸}}{\left( {{\frac{f_{1}^{2}}{f_{1}^{2} - f_{2}^{2}}\frac{c}{f_{1}}} - {\frac{f_{2}^{2}}{f_{1}^{2} - f_{2}^{2}}\frac{c}{f_{2}}}} \right)}\frac{1}{2}N_{i,{WL}}^{j}}} = {{\frac{1}{2}\lambda_{NL}N_{i,{NL}}^{j}} + {\frac{1}{2}\lambda_{WL}N_{i,{WL}}^{j}}}}}};{N_{i,{NL}}^{j} = {{N_{i,1}^{j} + N_{i,2}^{j}} = {{N_{i,1}^{j} + {\frac{1}{2}\left( {N_{i,{NL}}^{j} - N_{i,{WL}}^{j}} \right)}} = {{\lambda_{NL}N_{i,1}^{j}} + {\frac{1}{2}\left( {\lambda_{WL} - \lambda_{NL}} \right)N_{i,{WL}}^{i}}}}}}} & (24)\end{matrix}$

Thus, once the widelane ambiguity N_(i,WL) ^(j) has been fixed tointeger on base of the Melbourne-Wübbena linear combination (11), therelation (24) can be used for integer resolution of the unconstrainednarrowlane ambiguity N_(i,1) ^(j) (especially when λ_(NL)>>λ_(IF), seeTable 3),

$\begin{matrix}{N_{i,1}^{j} = {\frac{1}{\lambda_{NL}}\left( {{\lambda_{IF}N_{i,{IF}}^{j}} - {\frac{1}{2}\left( {\lambda_{WL} - \lambda_{NL}} \right)N_{i,{WL}}^{j}}} \right)}} & (25)\end{matrix}$

We call N_(i,1) ^(j) the unconstrained or free narrowlane ambiguitysince it occurs in (24) in combination with the narrowlane wavelengthλ_(NL) and does not depend on whether the fixed widelane is even or odd.Since N_(NL)=N_(WL)+2N₂ (see (23)), N_(NL) always has to have forconsistency reasons the same even/odd status as N_(WL) and is thereforealready constrained to some extent.

Part 5: Kalman Filter Overview

Some embodiments of the standard clock processor 320, the MW biasprocessor 325, the orbit processor 330 and the phase clock processor 335use a Kalman filter approach.

FIG. 6 shows a diagram of the Kalman filter algorithm 600. The modelingunderlying the Kalman filter equations relate the state vector x_(k) attime step k (containing the unknown parameters) to the observations(measurements) z_(k) via the design matrix H_(k) and to the state vectorat time step k−1 via the state transition matrix φ_(k-1), together withprocess noise w_(k-1) and observation noise v_(k) whose covariancematrices are assumed to be known as Q_(k), R_(k), respectively. Then theKalman filter equations predict the estimated state {circumflex over(x)}_(k-1) together with its covariance matrix P_(k-1) via the statetransition matrix φ_(k-1) and process noise input described bycovariance matrix Q_(k-1) to time step k resulting in predicted state{circumflex over (x)}_(k) ⁻ and predicted covariance matrix P_(k) ⁻.Predicted state matrix and state covariance matrix are then corrected bythe observation z_(k) in the Kalman filter measurement update where thegain matrix K_(k) plays a central role in the state update as well as inthe state covariance update.

Part 6: Code-Leveled Clock Processor

The estimated absolute code-leveled low-rate satellite clocks 365 areused in positioning solutions, for example to compute the precise sendtime of the GNSS signal and also to obtain a quick convergence of floatposition solutions, e.g., in precise point positioning. For send timecomputation a rough, but absolute, satellite clock error estimate can beused. Even the satellite clocks from the broadcast message are goodenough for this purpose. However, the quality of single-differencedpairs of satellite clock errors is important to achieve rapidconvergence in positioning applications. For this purpose a clockaccuracy level of ca. 10 cm is desired.

Some embodiments use quality-controlled ionospheric-free combinations ofGNSS observations from a global tracking network, optionally correctedfor known effects, to estimate (mostly) uninterrupted absolutecode-leveled satellite clock errors.

The raw GNSS reference station data 305 are optionally corrected by datacorrector 310 to obtain corrected network data 315 as described in Part3 above.

For each station, ionospheric-free combinations derived from observationof signals with different wavelengths (e.g. L1 and L2) and thebroadcasted clock error predictions are used as an input for the filter:P _(r,IF) ^(s) −cΔt _(rel) ^(s)=ρ_(r) ^(s) +cΔt _(P,r) −cΔt _(P) ^(s) +T_(r) ^(s)+ε_(P,r,IF) ^(s)  (26)Φ_(r,IF) ^(s) −cΔt _(rel) ^(s)=ρ_(r) ^(s) +cΔt _(P,r) −cΔt _(P) ^(s) +T_(r) ^(s) +λN _(r) ^(s)+ε_(Φ,r,IF) ^(s)  (27)Δt _(brc) ^(s)≈Δ_(P) ^(s)  (28)whereP_(r,IF) ^(s) is the ionospheric-free code combination for eachreceiver-satellite pair r, sΦ_(r,IF) ^(s) is the ionospheric-free phase observation for eachreceiver-satellite pair r, sΔt_(brc) ^(s) is the broadcast satellite clock error predictionρ_(r) ^(s) is the geometric range from satellite s to receiver rΔt_(rel) ^(s) represents the relativistic effects for satellite scΔt_(P,r):=cΔt_(r)+b_(P,r,IF) is the clock error for receiver rcΔt_(P) ^(s):=cΔt^(s)+b_(P,IF) ^(s) is the clock error for satellite sT_(r) ^(s) is the troposphere delay observed at receiver rε_(P,r,IF) ^(s) represents noise in the code measurementε_(Φ,r,IF) ^(s) represents noise in the carrier measurementλN_(r) ^(s):=λ_(IF)N_(r,IF) ^(s)+b_(Φ,r,IF)−b_(P,r,IF)−(b_(Φ,IF)^(s)−b_(P,IF) ^(s)) is the float carrier ambiguity from satellite s toreceiver r

The code and carrier observations are corrected for relativistic effectsΔt_(rel) ^(s), computed based on satellite orbits, when estimating thesatellite clock error. Afterwards this term can be added to theestimated clock error to allow the rover using those satellites tocorrect for all time related effects at once.

The geometric range ρ_(r) ^(s) at each epoch can be computed from aprecise satellite orbit and a precise reference station location. Therespective noise terms ε_(P,r,IF) ^(s) and ε_(Φ,r,IF) ^(s) are not thesame for code and carrier observations. Differencing the phaseobservation and code observation directly leads to a rough estimate ofthe carrier ambiguity N_(r) ^(s) though influenced by measurement noiseand ε_(P,r,IF) ^(s) and ε_(Φ,r,IF) ^(s):Φ_(r,IF) ^(s) −P _(r,IF) ^(s) =λN _(r) ^(s)+ε_(Φ,r,IF) ^(s)+ε_(P,r,IF)^(s).  (29)Thus as an input for the filter this difference Φ_(r,IF) ^(s)−P_(r,IF)^(s), the phase measurement Φ_(r,IF) ^(s) and the broadcasted satelliteclock error prediction Δt_(brc) ^(s) is used. The difference Φ_(r,IF)^(s)−P_(r,IF) ^(s) is a pseudo measurement for the ambiguities, whichare modeled as constants. As due to the biases the float ambiguity isnot really a constant the estimated value represents the ambiguitytogether with a constant part of the biases. The non-constant part ofthe biases will end up in the residuals. This approximation leads toacceptable results as long as the biases are more or less constantvalues. The converged float ambiguities are used to define the level ofthe clock errors.

Once the ambiguities are converged, the phase measurement Φ_(r,IF) ^(s)provides a measurement for the clock errors and the troposphere. For thetroposphere T_(r) ^(s)=(1+c_(T,r)){circumflex over (T)}_(r) ^(s) it issufficient to estimate only one scaling factor per receiver c_(T,r). Amapping to different elevations is computed using a troposphere model{circumflex over (T)}_(r) ^(s). The scaling factor can be assumed tovary over time like a random walk process.

For the satellite clocks a linear time discrete process is assumedΔt _(P) ^(s)(t _(i+1))=Δt _(P) ^(s)(t _(i))+w ₁ ^(s)(t _(i))+(Δ{dot over(t)} _(P) ^(s)(t _(i))+w ₂ ^(s)(t _(i)))(t _(i+1) −t _(i))  (30)with random walks w₁ ^(s) and w₂ ^(s) overlaid on the clock error Δt_(P)^(s) and on the clock error rate Δ{dot over (t)}_(P) ^(s). The receiverclocks are usually not as precise as the satellite clocks and are oftenunpredictable. Thus the receiver clocks are modeled as white noise toaccount for any behavior they might exhibit.

The system of receiver and satellite clocks is underdetermined if onlycode and phase observations are used. Thus all clock estimates can havea common trend (any arbitrary function added to each of the clocks). Ina single difference this trend cancels out and each single differenceclock is correct. To overcome this lack of information the broadcastclock error predictions can be used as pseudo observations for thesatellite clock errors to keep the system close to GPS time.

The assumption of a random walk on the clock rate is equal to theassumption of a random run on the clock error itself. Optionally aquadratic clock error model is used to model changes in the clock rate.This additional parameter for clock rate changes can also be modeled asa random walk. The noise input used for the filter can be derived by ananalysis of the clock errors using for example the (modified) Allandeviation or the Hadamard variance. The Allan deviation is described inA. van Dierendonck, Relationship between Allan Variances and KalmanFilter Parameters, PROCEEDINGS OF THE 16^(TH) ANNUAL PRECISE TIME ANDTIME INTERVAL (PTTI) SYSTEMS AND APPLICATION MEETING 1984, pp. 273-292.The Hadamard variance is described in S. Hutsell, Relating the Hadamardvariance to MCS Kalman filter clock estimation, 27^(TH) ANNUAL PRECISETIME AND TIME INTERVAL (PTTI) APPLICATIONS AND PLANNING MEETING 1996,pp. 291-301.

There are many different approaches to overcome the underdeterminedclock system besides adding the broadcasted satellite clock errors aspseudo-observations. One is to fix one of the satellite or receiverclock errors to the values of an arbitrarily chosen function (e.g. 0 oradditional measurements of a good receiver clock). Another is to fix themean of all clocks to some value, for example to the mean of broadcastedor ultra-rapid clock errors as done in A. Hausschild, Real-time ClockEstimation for Precise Orbit Determination of LEO-Satellites, ION GNSS2008, Sep. 16-19, 2008, Savannah, Ga., 9 pp. This is taken into accountin deriving the clock models; the system model and the noise model fitsthe clock error difference to the fixed clock error and no longer to theoriginal clock error.

FIG. 7 is a schematic diagram of a “standard” code-leveled clockprocessor 320 in accordance with some embodiments of the invention. Aniterative filter such as a Kalman filter 705 uses for exampleionospheric-free linear combinations 710 of the reference stationobservations and clock error models 715 with broadcast satellite clocks720 as pseudo-observations to estimate low-rate code-leveled (standard)satellite clocks 365, tropospheric delays 370, receiver clocks 725,satellite clock rates 730, (optionally) ionospheric-free floatambiguities 374, and (optionally) ionospheric-free code-carrier biases372.

Further improvements can be made to quality of the clocks. Singledifferences of the estimated clock errors can exhibit a slow drift dueto remaining errors in the corrected observations, errors in the orbits,and long term drift of the biases. After some time the singledifferences of the estimated clock errors no longer match a code-leveledclock. To account for such a drift, the mismatch between code and phasemeasurements is optionally estimated and applied to the estimated clockerrors. In some embodiments this is done by setting up an additionalfilter such as filter 735 of FIG. 7 with only one bias per satellite andone per receiver, to estimate the ionospheric-free code-carrier biases372 as indicated by “option 1.” The receiver biases are modeled forexample as white noise processes. The satellite biases are modeled forexample as random walk with an appropriate small input noise, becauseonly low rate variations of the satellite biases are expected.Observations used for this filter are, for example, an ionospheric-freecode combination 740, reduced by the tropospheric delay 370, thesatellite clock errors 365 and the receiver clock errors 725 estimatedin the above standard code-leveled clock filter 705. Rather than settingup the additional filter such as filter 730, the iono-free code-carrierbiases are in some embodiments modeled as additional states in thecode-leveled clock estimation filter 705, as indicated by “option 2.”

Part 7: MW (Melbourne-Wübbena) Bias Processor

Part 7.1 MW Bias: Motivation

The range signals emitted by navigation satellites and received by GNSSreceivers contain a part for which delays in the satellite hardware areresponsible. These hardware delays are usually just called satellitebiases or uncalibrated delays. In differential GNSS processing thesatellite biases do not play any role when both receivers receive thesame code signals (e.g. in case of GPS both L I C/A or both LIP).However, the biases are always important for Precise Point Positioning(PPP) applications where the precise positioning of a single roverreceiver is achieved with the help of precise satellite clocks andprecise orbits determined on base of a global network of referencestations (as e.g. by the International GNSS service (IGS)) (Zumberge,Heflin, Jefferson, Watkins, & Webb, 1997), (Héroux & Kouba, 2001). Herethe knowledge of satellite biases can allow to resolve undifferenced (orbetween satellite single differenced) integer ambiguities on the roverwhich is the key to fast high precision positioning without a referencestation (Mervart, Lukes, Rocken, & Iwabuchi, 2008), (Collins, Lahaye,Héroux, & Bisnath, 2008).

Usually the satellite biases are assumed to be almost constant over timeperiods of weeks (Ge, Gendt, Rothacher, Shi, & Liu, 2008), and theirvariations can be neglected (Laurichesse & Mercier, 2007), (Laurichesse,Mercier, Berthias, & Bijac, 2008). Our own intensive studies revealed byprocessing in the here proposed way GPS data of a global network ofreference stations over several months that there are daily repeatingpatterns in the Melbourne-Wübbena (MW) linear combination of satellitebiases of size up to about 14 cm over 6 hours, as well as drifts over amonth of up to about 17 cm and sometimes sudden bias level changes (ofarbitrary size) of individual satellites within seconds (e.g. GPS PRN 24on 2008 Jun. 26). Nevertheless, the daily repeatability of the MWsatellite biases is usually in the range of 2 to 3 cm which isconsistent with the literature. Therefore the real-time estimation ofsatellite biases as a dynamical system in a sequential least squaresfilter (like e.g. a Kalman filter ((Grewal & Andrews, 2001), (Bierman,1977)) and the transmission of these biases to PPP based rover receivers(in addition to precise satellite clocks and orbits) becomes importantfor integer ambiguity resolution on the rover.

Part 7.2 MW Bias: Process Flow

FIG. 8 is a schematic diagram of a process flow 1100 for MW satellitebias and WL ambiguity determination in accordance with some embodiments.GNSS observation data 305 on code and carrier phase on at least twofrequencies from a number of reference station receivers is used as themain input into the process. These observations are optionally correctedat 310 for effects that do not require estimation of any modelparameters. Among the corrections typically used in PPP applications forthe MW linear combination, especially the receiver and satellite antennaoffsets and variations are of importance. Higher order ionospheric termsdo not cancel in this linear combination. The optionally corrected GNSSobservation data 315 is then forwarded to a module 1105 that generateslinear combinations 1110 of the code and phase observations on twofrequencies. The determined MW observation combinations 1110 are theninput into a sequential filter 1115 (such as a Kalman filter) thatrelates MW observations Φ_(i,WL) ^(j)−P_(i,NL) ^(j) to the estimationparameters, i.e., the MW satellite biases b_(MW) ^(j) 1120, WLambiguities N_(i,WL) ^(j) 1125 and optionally MW receiver biasesb_(i,MW) 1130 via Equation (11) in the undifferenced case or viaEquation (12) in the between satellite single difference case.

Importantly, process noise input on the MW satellite biases b_(MW) ^(j)ensures that the biases can vary over time. Due to the periodic behaviorof satellite biases, optionally the biases may also be modeled byharmonic functions, e.g. asb _(MW) ^(j) =b ₀ ^(j) +b ₁ ^(j) sin(α^(j))+b ₂ ^(j) cos(α^(j))  (31)where a^(j) defines the position of satellite j in the orbit (e.g. α^(j)could be the argument of latitude or the true anomaly) and b₀ ^(j), b₁^(j), b₂ ^(j) are the estimated parameters that need much less processnoise than a single parameter b_(MW) ^(j) and can therefore furtherstabilize the estimation process.

In addition to the observation data, a single MW bias constraint 1140and several ambiguity constraints 1145 are input to the filter [935].These constraints are additional arbitrary equations that are e.g. ofthe formb _(WL) ^(j) ⁰ =0  (32)N _(i,WL) ^(j)=round(N _(i,WL) ^(j))  (33)and that are added to the filter with a very low observation variance ofe.g. 10⁻³⁰ m². The constraints ensure that the system of linearequations in the filter 1115 is not underdetermined so that thevariances of the model parameters immediately become of the same orderas the observation variance. They have to be chosen in a careful way sothat the system of linear equations is not over-constrained byconstraining a double-difference WL ambiguity which is directly given bythe MW observations (see equation (13). By constraining the ambiguitiesto an arbitrary integer, information about the integer nature of theambiguities comes into the system. In a Kalman filter approach where thesystem of equations in (11) or (12) (optionally together with (31)) isextended by arbitrary equations for the initial values of all parametersso that always a well defined float solution (with variances of the sizeof the initial variances) exists, it is preferable to constrain theambiguities to the closest integer of the Kalman filter float solution.

The estimated MW satellite biases 1120 are either directly used as theprocess output or after an optional additional WL ambiguity fixing step.Therefore the estimated WL ambiguities 1125 are optionally put into anambiguity fixer module 1135. The resulting fixed WL ambiguities 340(that are either fixed to integer or float values) are used as thesecond process output. Optionally the fixed WL ambiguities 340 are fedback into the filter 1115 (or into a filter copy or a secondary filterwithout ambiguity states (compare FIG. 21A-FIG. 22C) to get satellite MWbias output 1120 which is consistent with integer WL ambiguities.

The MW satellite biases 1120 are transferred for example via thescheduler 355 to rover receivers where they help in fixing WLambiguities at the rover. Network WL ambiguities 1125 or 340 can beforwarded to the phase clock processor 335 and orbit processor 330 wherethey help in fixing iono-free (IF) ambiguities when the referencestation data 305 from the same receiver network is used in theseprocessors. Alternatively, instead of the network WL ambiguities 1125 or340], MW satellite biases 1120 are transferred to orbit processor 330and phase clock processor 335 to derive WL ambiguities in a station-wiseprocess for the network receivers in the same way as it is done on therover. Then the derived WL ambiguities help in fixing IF ambiguities.With such an approach, GNSS data from different reference stationnetworks can be used in the different processors.

FIG. 9 shows a schematic diagram of a processing architecture 1200 inaccordance with some embodiments. Code and carrier phase observations1205 (e.g., from reference station data 305) on at least two frequenciesfrom a number of reference station receivers are put into a linearcombiner 1210 that generates a set of Melbourne-Wübbena (MW) linearcombinations 1220, one such MW combination for each station-satellitepairing from code and carrier phase observations on two frequencies. Ifmore than two frequencies are available several MW combinations can begenerated for a single station-satellite pairing. These MW observationsare then put into a processor 1225 that estimates at least MW biases persatellite 1230 and WL ambiguities per station-satellite pairing 1235based on modeling equations (11) in the undifferenced case or (12) inthe between satellite single difference case (both optionally togetherwith (31)). The processor is usually one or more sequential filters suchas one or more Kalman filters. Since it can also consist of severalfilters, here the more general term processor is used. Process noise1240 input on the MW satellite biases in the processor allows them tovary from epoch to epoch even after the convergence phase of filtering.The outputs of the process are the estimated satellite MW biases 1230and network WL ambiguities 1235.

Thus, some embodiments provide a method of processing a set of GNSSsignal data derived from code observations and carrier-phaseobservations at multiple receivers of GNSS signals of multiplesatellites over multiple epochs, the GNSS signals having at least twocarrier frequencies, comprising: forming an MW (Melbourne-Wübbena)combination per receiver-satellite pairing at each epoch to obtain a MWdata set per epoch; and estimating from the MW data set per epoch an MWbias per satellite which may vary from epoch to epoch, and a set of WL(widelane) ambiguities, each WL ambiguity corresponding to one of areceiver-satellite link and a satellite-receiver-satellite link, whereinthe MW bias per satellite is modeled as one of (i) a single estimationparameter and (ii) an estimated offset plus harmonic variations withestimated amplitudes.

Broadcast satellite orbits contained in the navigation message areoptionally used, for example with coarse receiver positions, to reducethe incoming observations to a minimal elevation angle under which asatellite is seen at a station. The receiver positions are optionallygiven as an additional input, or alternatively can be derived as knownin the art from the code observations and the broadcast satellite orbit.The restriction to observations of a minimal elevation can be done atany place before putting the observations into the processor. However,performing the restriction directly after pushing the code and carrierphase observations into the process avoids unnecessary computations.

FIG. 13A and FIG. 13B show respectively the state vectors for theundifferenced (=zero-differenced (ZD)) and single differencedembodiments, listing parameters to be estimated. The ZD state vector1310 comprises n satellite bias states b_(MW) ^(j), a number ofambiguity states N_(i,WL) ^(j) that changes over time with the number ofsatellites visible at the stations, and m receiver bias states b_(i,MW).The SD state vector 1320 comprises n satellite bias states b_(MW) ^(jj)⁰ to a fixed reference satellite j₀ that can be either a physical or anartificial satellite. In addition, the SD state vector comprises thesame number of ambiguity states as in the ZD case. However, here eachambiguity represents an SD ambiguity to a physical or artificialsatellite. Each station can have its own choice of reference satellite.In the SD case no receiver bias states are necessary, so that there arealways m less states in the SD state vector 1320 than in the comparableZD state vector 1310. More details about artificial reference satellitesfollow in Part 7.4.

Part 7.3 MW Process: Correcting and Smoothing

FIG. 11 shows a process 1400 with the addition of observation correctionto the MW process of FIG. 9. Some embodiments add the observation datacorrector module 310 of FIG. 3. Code and carrier phase observations 1205on at least two frequencies from a number of reference stations (e.g.,from reference station data 305) are corrected in the optionalobservation data corrector 310 for effects that do not requireestimation of any model parameters (especially receiver and satelliteantenna offsets and variations, and higher order ionospheric effects).Knowledge of the broadcast satellite orbits 1245 and the coarse receiverpositions 1250 is used for this. The corrected observation data 1310 arethen optionally fed into the process of FIG. 12 to produce MW satellitebiases 1330 and widelane ambiguities 1335.

In FIG. 12, code and carrier phase observations 1205 on at least twofrequencies from a number of reference stations (e.g., from referencestation data 305) are optionally corrected in the observation datacorrector 310, then combined in a linear combiner 1210 to formMelbourne-Wübbena linear combinations 1220 and finally smoothed overseveral epochs in a smoother 1410 to form smoothed Melbourne-Wübbenacombinations 1420. Alternatively, smoothing can be done on the originalobservations or on any other linear combination of the originalobservations before generating the MW linear combination. In any case,the resulting smoothed MW observations are put into the processor 1225for estimating MW satellite biases 1430 and WL ambiguities 1435 as inthe embodiments of FIG. 9 and FIG. 11.

Smoothing means to combine multiple observations over time, e.g. by asimple averaging operation, to obtain a reduced-noise observation. MWsmoothing is done to reduce the multipath error present in (10) that isnot explicitly modeled in the processor 1225, e.g., as in modelingequations (11) and (12). Smoothing is motivated by the expectation thatthe MW observation is almost constant over short time periods since theMW observation only consists of hardware biases and a (constant)ambiguity term. A reasonable smoothing interval is, for example, 900seconds. An additional advantage of smoothing the MW observations isthat an observation variance can be derived for the smoothed observationfrom the input data by the variance of the mean value,

$\begin{matrix}{\sigma_{{obs},{MW}}^{2} = {{\frac{\sum\limits_{t = 1}^{n}\left( {x_{t} - \overset{\_}{x}} \right)^{2}}{\left( {n - 1} \right)n}\mspace{14mu}{with}\mspace{14mu}\overset{\_}{x}} = {\frac{1}{n}{\sum\limits_{t = 1}^{n}x_{t}}}}} & (34)\end{matrix}$where x_(t) is the MW observation at smoothing epoch t and n is thenumber of observations used in the smoothing interval. To ensure thatthis variance really reflects multipath and not just a too-small numberof possibly unreliable observations in the smoothing interval, it isadvantageous to accept a smoothed observation as filter input only whena minimal number of observations is available, e.g. 80% of thetheoretical maximum. Note that the statistical data that holds meanvalue and variance of the Melbourne-Wübbena observation has to be resetin case of an unrepaired cycle slip since this observation contains anambiguity term. Of course, a cycle slip also requires a reset of thecorresponding ambiguity in the filter.

If smoothing is done by a simple averaging operation over a fixed timeinterval, smoothing implies different data rates in the process.Observations 1205 are coming in with a high data rate, while smoothed MWobservations 1420 are forwarded to the processor with a lower data rate.This kind of smoothing has the advantage that observations put into theprocessor are not correlated and can therefore be handled in amathematically correct way. The alternative of using some kind of a(weighted) moving average allows to stay with a single (high) data rate,but has the disadvantage that the resulting smoothed observations becomemathematically correlated.

Part 7.4 MW Process: MW Bias Constraint

FIG. 13 shows a process 1600 with the addition of one or more MW biasconstraints to the process of FIG. 12, which can similarly be added tothe embodiments shown in FIG. 9, FIG. 11. At least one MW biasconstraint 1605 like (32) is put into the processor to reduce the rankdefect in modeling equations (11) or (12).

The rank defect in (11) or (12) becomes apparent by counting the numberof observations and the number of unknowns in these equations. Forexample in (11), if there are i=1, . . . , m stations and j=1, . . . , nsatellites and it is assumed that all satellites are seen at allstations, there will be m·n Melbourne-Wübbena observations. However, atthe same time there are also in m·n unknown ambiguities N_(i,WL) ^(j) inaddition to m receiver biases b_(i,MW) and n satellite biases b_(MW)^(j), resulting in m·n+m+n unknowns. Thus the system of equationsdefined by (11) can only be solved if the number of arbitraryconstraints introduced into the system is the number of unknowns minusthe number of observations, i.e. (m·n+m+n)−(m·n)=m+n.

Most of these constraints should be ambiguity constraints as thefollowing consideration demonstrates. For n satellites n−1 independentbetween-satellite single differences can be generated. In the same way,from m stations m−1 between station single differences can be derived.In a double difference (DD) between stations and satellites theseindependent single differences are combined, resulting in(m·1)·(n−1)=m·n−(m+n−1) double difference observations. Since as in (13)the DD ambiguities are uniquely determined by the DD-MW observations,the difference between the m·n ambiguities in (11) and the m·n−(m+n−1)unique DD ambiguities should be constrained, resulting in m+n−1ambiguity constraints. Thus from the m+n required constraints all butone should be ambiguity constraints. The remaining arbitrary constraintshould be a constraint on the biases. This statement remains true in themore general case when not all satellites are seen at all stations andthus the number of required constraints can no longer be counted in thedemonstrated simple way. The constraint on the biases itself is anarbitrary equation like (32) or more generally of the form

$\begin{matrix}{{{{\sum\limits_{i}{a_{i}b_{i,{MW}}}} + {\sum\limits_{j}{a^{j}b_{MW}^{j}}}} = {b\mspace{14mu}{with}\mspace{14mu} a_{i}}},a_{j},{b \in R}} & (35)\end{matrix}$

In the single difference case (12) the constraint on the biases is morestraightforward. The state vector of the satellite biases does notcontain all possible SD biases but only the independent ones. This isachieved by taking an arbitrary reference satellite and choosing asstates only the SD biases to the reference. To be prepared for achanging reference satellite in case the old reference satellite is notobserved anymore, it is preferable to also have a state for thereference satellite. However, the SD bias of the reference to itself hasto be zero.b _(MW) ^(j) ^(ref) ^(j) ^(ref) =b _(MW) ^(j) ^(ref) −b _(MW) ^(j)^(ref) ≡0  (36)This equation is added as a constraint. Note, however, that the SD biasstates are not necessarily interpreted as SDs to a physical referencesatellite. It is also possible to have an artificial reference satellitewith a bias that is related to the biases of the physical satellites(this ensures that the artificial satellite is connected to the physicalsatellites)

$\begin{matrix}{{\sum\limits_{i}{a^{j}b_{MW}^{j}\mspace{14mu}{with}\mspace{14mu} a^{j}}},{b \in R}} & (37)\end{matrix}$

By specifying arbitrary values for a^(j), b (with at least one a^(j)≠0)and introducing (37) as a constraint into (12), the information aboutthe bias of the reference satellite comes into the system.

With knowledge of MW satellite biases (as they are derived from thesystem proposed here) from a different source, it is also reasonable tointroduce more than one bias constraint into the system. For example, ifall MW satellite biases are constrained, it is in a single-differenceapproach not necessary to introduce any ambiguity constraints into thesystem, since (12) can be rewritten asΦ_(i,WL) ^(j) ¹ ^(j) ² −P _(i,NL) ^(j) ¹ ^(j) ² +b _(MW) ^(j) ¹ ^(j) ²=λ_(WL) N _(i,WL) ^(j) ¹ ^(j) ²   (38)

Thus all SD ambiguities N_(i,WL) ^(j) ¹ ^(j) ² are uniquely determinedwith knowledge of the SD-MW satellite biases. It is exactly thisrelation that helps a rover receiver to solve for its WL ambiguitieswith the help of the here derived MW satellite biases.

In the undifferenced approach, one ambiguity constraint per station isintroduced when the MW satellite biases for all satellites areintroduced as constraints into the system.

All bias constraints to handle the rank defect in modeling equations(11) or (12) are avoided if one additional ambiguity constraint isintroduced instead. However, this additional ambiguity constraint is notarbitrary. It is chosen such that the double difference relation (13) isfulfilled. However, (13) does not contain the unmodeled multipath andjust determines a float value for the DD ambiguity. Thus, deriving aninteger DD ambiguity value from (13) is prone to error.

To better distinguish between arbitrary ambiguity constraints andambiguity constraints that have to fulfill the DD ambiguity relation(13), we usually call the second kind of constraints ambiguity fixes.While constraints are arbitrary and do not depend on the actualobservations, fixes do. Constraints cannot be made to a wrong value,fixes can. Which of the ambiguities can be constrained to an arbitraryvalue is described in Part 7.6.

Part 7.5 MW Bias Process: WL Ambiguity Constraints

FIG. 14 shows a process 1700 with the addition of one or more WLambiguity constraints to the process of FIG. 13, which can similarly beadded to the embodiments shown in FIG. 9, FIG. 11 and FIG. 12. At leastone WL ambiguity integer constraint 1705 as in Equation (33) is put intothe processor 1225 to further reduce the rank defect in modelingequations (11) or (12). As for FIG. 13, the correct number of arbitraryambiguity constraints in a network with i=1, . . . , m stations and j=1,. . . , n satellites, where all satellites are seen at all stations, ism+n−1. However, in a global network with reference stations distributedover the whole Earth not all satellites are seen at all stations. Forthis case, choosing the correct number of arbitrary ambiguityconstraints and determining the exact combinations that are notrestricted by the DD ambiguity relation (13) is described in Part 7.6.

Although the constrained ambiguities that are not restricted by the DDambiguity relation (13) could be constrained to any value in order toreduce the rank effect in the modeling equations (11) or (12), it isdesirable to constrain these ambiguities to an integer value so that theinteger nature of the ambiguities comes into the system. This helpslater on when for the remaining unconstrained float ambiguities, integervalues are searched that are consistent with (13) and to which theseambiguities can be fixed.

In a Kalman filter approach where equations (11) or (12) are extended byequations for the initial values of the parameters, there is always awell defined float solution for all parameters (that has, however, alarge variance if the initial variances of the parameters have also beenchosen with large values). In this case it is reasonable to constrainthe ambiguities to the closest integer of their Kalman filter floatsolution since this disturbs the filter in the least way and gives thesolution that is closest to the initial values of the parameters. It isalso advantageous to constrain the ambiguities one after the other,looking up after each constraint the updated float ambiguity of the nextambiguity to be constrained. Such a procedure helps to stabilize thefilter in cases of network outages where many ambiguities are lost,receiver biases are modeled as white noise parameters and just alreadyconverged satellite biases have a defined value.

Part 7.6 MW Bias Process: Determining WL Ambiguity Constraints

FIG. 15 shows a process 1800 with the addition of determining one ormore WL ambiguity constraints for the process of FIG. 14 so as to avoidunder- and over-constraining of the modeling equations (11) or (12).

Under-constraining means that too few constraints have been introducedto overcome the rank defect in (11) or (12). Over-constraining meansthat arbitrary constraints have been introduced that are inconsistentwith the DD ambiguity relation (13). Thus, a system can be at the sametime over- and under-constrained.

The MW observation input 1420 defines an observation graph, 1805, i.e. anumber of edges given by observed station-satellite links. Based on thisgraph a spanning tree (ST) 1815 is generated by an ST generator 1810that connects all stations and satellites (in the undifferenced case(11)) or just all satellites (in the between satellite singledifferenced case (12)) without introducing loops. The resulting ST 1815defines the WL ambiguity constraints 1705, i.e., which WL ambiguitiesare constrained.

FIG. 16A shows at 1900 how observed station-satellite links can beinterpreted as an abstract graph, i.e. a number of vertices connected byedges. The stations at the bottom of FIG. 16A and the satellites at thetop of FIG. 16A are identified as vertices and the station-satellitepairs (each pair corresponding to observations at a station of asatellite's signals) as edges. The abstract graph 1910 of FIG. 16B doesnot distinguish any more between stations and satellites and insteadshows the edges as links between vertices.

In graph theory a tree is a graph without closed loops. An example isshown at 1920 in FIG. 16C, where the tree is marked with bold lines. Aspanning tree on a graph is a tree that connects (or spans) allvertices, as in FIG. 16C.

Instead of building the spanning tree based on the current observationgraph, it can alternatively be based on all station-satelliteambiguities that are currently in the filter. These ambiguitiescorrespond to station-satellite links that were observed in the past butthat are not necessarily observed anymore in the current epoch. We callthe station-satellite links defined by the filter ambiguities the filtergraph. Notice that it is a bit arbitrary for how long ambiguities arekept in the filter when they are no longer observed. If a fixed slotmanagement for the ambiguities in the filter is used that holds amaximal number of ambiguities for each station so that a newly observedambiguity on a rising satellite will throw out the oldest ambiguity ifall slots are already used, this time of keeping a certain ambiguitydoes not have to be specified. It will be different for each satelliteon each station. However, such a slot management guarantees that aftersome time each station holds the same number of ambiguities.

In general the filter graph contains more station-satellite links thanthe observation graph. It contains in addition stations that are notobserved anymore (which often occurs for short time periods in a globalnetwork), satellites no longer observed at any station (e.g. since asatellite became unhealthy for a short time period), or juststation-satellite links that fall below the elevation cutoff. Working onthe filter graph is of special importance when the later describedambiguity fixing is also done on the filter graph and ambiguityconstraints and fixes are introduced on the original filter and not on afilter copy.

In the single-differenced observation graph 1960 of FIG. 16G twosatellites are usually connected by several edges since the twosatellites are usually observed at several stations. Each edgeconnecting two satellites corresponds to an (at least in the past)observed satellite-station-satellite link, i.e., a single-differenceobservation. Of course, also the SD filter graph 1970 of FIG. I 6Hcontains more edges than the SD observation graph 1960.

Constraining the ambiguities determined by a spanning tree over theobservation or the filter graph can avoid under- and over-constrainingof modeling equations (11) or (12). This is illustrated for theundifferenced case in FIG. 16D. A spanning tree (ST) on the observationgraph or filter graph connects all vertices without introducing loops(see emphasized edges in FIG. 16C). FIG. 16D shows at 1930 in additionto the spanning tree edges (in dark grey) that are constrained to anarbitrary integer value, also a single satellite bias constraint S1depicted in dark grey. The satellite bias is visualized as a circlesince its contribution to the observation is the same for all receiverobservations of this satellite.

Constraining the ST edges together with one additional satellite bias S1allows to resolve the underdetermined linear system of equations (11):The observation R1-S1 together with the satellite bias constraint S1 andthe ambiguity constraint R1-S1 allows to uniquely solve for receiverbias R1 (compare equation (11)). Once receiver bias R1 is known, theobservation R1-S2 together with the ambiguity constraint R1-S2 allows tosolve for satellite bias S2. In the same way all other receiver andsatellite biases can be computed with the help of the ST constrainedambiguities. The spanning property of the ST ensures that all satelliteand receiver biases are reached while the tree property ensures thatthere are no loops that would constrain a double difference observation(13). Once all satellite and receiver biases are known, the remainingambiguities (e.g. R2-S1, R2-S4 and R2-S5 in FIG. 16D) can be directlycomputed from the remaining observations one after the other.

In the SD case shown in FIGS. 16G and 16H the argumentation is quitesimilar. Constraining one SD satellite bias to an arbitrary value (e.g.,constraining the bias of a physical reference satellite to 0), the SDsatellite bias of the next satellite can be determined with the help ofan SD observation between the first and second satellite and theambiguity constraint from the SD spanning tree between the twosatellites (compare equation (12)). Once the second satellite bias isknown the third bias can be calculated. In the same way all othersatellite biases are determined with the help of the SD spanning treeconstraints. By adding one ambiguity constraint per station to anarbitrary satellite, all remaining SD ambiguities (single-differencedagainst a station-specific reference satellite) in the filter can beresolved one after the other.

The relation underlying this description between an undifferenced(=zero-differenced (ZD)) spanning tree 1975 and a SD spanning tree 1980is depicted in FIG. 16I. Connecting each station with a single satelliteby introducing one ambiguity constraint per station and adding to theseconstraints the ones given by an ST on the SD observation graph (orfilter graph), defines the same constraints that are given by an ST on aZD observation graph (or filter graph) 1985. Building up a spanning treeon a graph is not a unique process. For a given graph there exist manytrees that span the graph. To make the generation of a spanning treemore unique the use of a minimum spanning tree (with respect to somecriterion) is proposed in Part 7.7.

Part 7.7 MW Bias Process: Minimum Spanning Tree

FIG. 18A shows at 2110 a spanning tree (ST) on an undifferencedobservation graph. FIG. 18B shows at 2120 a minimum spanning tree (MST)(Cormen, Leiserson, Rivest, & Stein, 2001) on the undifferencedobservation graph of FIG. 18A. FIG. 17 shows the ST generator 1810 ofFIG. 15 replaced with an MST generator 2010. For building up an MST on agraph, each edge has an edge weight resulting in a so-called weightedgraph. The MST is defined as the spanning tree with the overall minimaledge weight. The edge weight can be assigned in any of a variety ofways. One possible way is based on the current receiver-satellitegeometry and therefore use the station positions 1250 and the satellitepositions 1245 as inputs. The connections between the coarse receiverpositions 1250, the broadcast satellite orbits 1245 and the MSTgenerator 2010 are depicted in FIG. 17.

The edges in the undifferenced observation graph or filter graph aregiven by station-satellite links. In some embodiments the edge weight isthe geometric distance from receiver to satellite or asatellite-elevation-angle-related quantity (like the inverse elevationangle or the zenith distance (=90°-elevation)).

The edges in the single-differenced observation graph or filter graphare given by satellite-receiver-satellite links connecting two differentsatellites over a station. In some embodiments the edge weight is thegeometric distance from satellite to receiver to satellite, or acombination of the elevations under which the two satellites are seen atthe receiver. In some embodiments the combination of the two elevationsis the sum of the inverse elevations, the sum of the zenith distances,the minimal inverse elevation, or the minimal zenith distance.

In FIG. 18A and FIG. 18B the ST and MST edges are marked with an “X.”The ST 2110 in FIG. 18A and the MST 2120 in FIG. 18B are identical, andthe ST 2130 in FIG. 18C and the MST 2140 in FIG. 18D are identical,reflecting the fact that each ST can be obtained as an MST by definitionof suitable edge weights.

An MST is well defined (i.e. it is unique) if all edge weights aredifferent. Assigning the weights to the edges allows control on how thespanning tree is generated. In embodiments using geometrical basedweights the MST is generated in a way that highest satellites (havingsmallest geometrical distance and smallest zenith distance, or smallestvalue of 1/elevation) are preferred. These are also thestation-satellite links that are least influenced by the unmodeledmultipath. In these embodiments the weights prefer those edges forconstraining which should shift the least multipath into other linkswhen constraining the ambiguities to an integer value. In embodimentsusing low elevation station-satellite links with high multipath forconstraining, the multipath is shifted to links with higher elevationsatellites. This can result in the counter-intuitive effect thatambiguities on high elevation satellites become more difficult to fix toan integer value.

Generating an MST on a given weighted graph is a standard task incomputer science for which very efficient algorithms exist. Examples areKruskal's, Prim's, and Boruvka's algorithms.

FIG. 19 shows an alternative way of choosing the edge weights of theobservation graph or filter graph on which the MST (defining theconstrained ambiguities) is generated. In some embodiments, the edgeweights are derived from the ambiguity information in the filter, i.e.from the values of the WL ambiguities 1435, or from the variances 2210of the WL ambiguities, or from both.

A particular interesting edge weight used in some embodiments is thedistance of the corresponding ambiguity to its closest integer value. Inthis way the MST chooses the ambiguities for constraining that span theobservation/filter graph and that are as close as possible to integer.Thus the states in the processor are influenced in a minimal way by theconstraints to integer. An additional advantage is that the constraintsof the last epoch will also be favored in the new epoch since theirdistance to integer is zero which prevents from over-constraining thefilter when the constraints are directly applied to the filter and nofilter copy is used. The same goal is reached by using the variance ofthe ambiguity as an edge weight. Constrained ambiguities have a varianceof the size of the constraining variance, e.g., 10⁻³⁰ m², and are thusfavored in the MST generation in some embodiments. In some embodimentseach combination of ambiguity distance to integer and ambiguity varianceis used as an edge weight. In some embodiments the combination of anedge weight derived from the station-satellite geometry and fromambiguity information is used. In some embodiments for example, in thefirst epoch a geometrically motivated weight is chosen (to minimizeeffects from unmodeled multipath and to ensure that constraints stay inthe system for a long time) and in later epochs an ambiguity-derivedweight (to avoid over-constraining) is chosen.

Part 7.8 MW Bias Process: WL Ambiguity Fixing

FIG. 20A shows fixing of the WL ambiguities before they are sent out(e.g. for use in the phase clock processor 335 or orbit processor 300).In some embodiments the WL ambiguity state values 1435 are forwardedtogether with at least the WL ambiguity variances 2210 from the filterto an ambiguity fixer 2305 module. The ambiguity fixer module 2305outputs the fixed WL ambiguities 2310.

The ambiguity fixer module 2305 can be implemented in a variety of ways:

Threshold Based Integer Rounding:

In some embodiments a simple fixer module checks each individualambiguity to determine whether it is closer to integer than a giventhreshold (e.g., closer than a=0.12 WL cycles). If also the standarddeviation of the ambiguity is below a second given threshold (e.g,σ=0.04 so that a=3σ) the ambiguity is rounded to the next integer forfixing. Ambiguities that do not fulfill these fixing criteria remainunfixed. In some embodiments the satellite elevation angle correspondingto the ambiguity is taken into account as an additional fixing criterionso that e.g. only ambiguities above 15° are fixed.

Optimized Sequence, Threshold Based Integer Bootstrapping:

A slightly advanced approach used in some embodiments fixes ambiguitiesin a sequential way. After the fix of one component of the ambiguityvector, the fix is reintroduced into the filter so that all other notyet fixed ambiguity components are influenced over their correlations tothe fixed ambiguity. Then the next ambiguity is checked for fulfillingthe fixing criteria of distance to integer and standard deviation. Insome embodiments the sequence for checking ambiguity components ischosen in an optimal way by ordering the ambiguities with respect to acost function, e.g. distance to integer plus three times standarddeviation. In this way the most reliable ambiguities are fixed first.After each fix the cost function for all ambiguities is reevaluated.After that, again the ambiguity with the smallest costs is checked forfulfilling the fixing criteria. The fixing process stops when the bestambiguity fixing candidate does not fulfill the fixing criteria. Allremaining ambiguities remain unfixed.

Integer Least Squares, (Generalized) Partial Fixing:

A more sophisticated approach used in some embodiments takes thecovariance information of the ambiguities from the filter into account.The best integer candidate N₁ is the closest integer vector to the leastsquares float ambiguity vector {circumflex over (N)}εR^(v) in the metricdefined by the ambiguity part of the (unconstrained) state covariancematrix P_({circumflex over (N)})εR^(v)×R^(v), both obtained from thefilter, i.e.

$\begin{matrix}{N_{1} = {\arg\;{\min\limits_{N \in Z^{v}}{\left( {N - \hat{N}} \right)^{t}{P_{\hat{N}}^{- 1}\left( {N - \hat{N}} \right)}}}}} & (39)\end{matrix}$

However, since the observation input to the filter is, due tomeasurement noise, only precise to a certain level also the resultingestimated float ambiguity vector {circumflex over (N)} is only reliableto a certain level. Then a slightly different {circumflex over (N)} maylead to a different NεZ^(v) that minimizes (39). Therefore in someembodiments the best integer candidate is exchanged with e.g. the secondbest integer candidate by putting other noisy measurements (e.g. fromother receivers) into the filter. To identify the reliable components inthe ambiguity vector that can be fixed to a unique integer with a highprobability, the minimized quantity (N−{circumflex over(N)})^(j)P_({circumflex over (N)}) ⁻¹(N−{circumflex over (N)}) iscompared in some embodiments under the best integer candidates in astatistical test like the ratio test. If N_(i) is the i'th best (i>1)integer candidate this implies that (N_(i)−{circumflex over(N)})^(j)P_({circumflex over (N)}) ⁻¹(N_(i)−{circumflex over (N)})>

$\begin{matrix}{{{{\left( {N_{i} - \hat{N}} \right)^{t}{P_{\hat{N}}^{- 1}\left( {N_{i} - \hat{N}} \right)}} > {\left( {N_{1} - \hat{N}} \right)^{t}{P_{\hat{N}}^{- 1}\left( {N_{1} - \hat{N}} \right)}}},{or}}{F_{i}:={\frac{\left( {N_{i} - \hat{N}} \right)^{t}{P_{\hat{N}}^{- 1}\left( {N_{i} - \hat{N}} \right)}}{\left( {N_{1} - \hat{N}} \right)^{t}{P_{\hat{N}}^{- 1}\left( {N_{1} - \hat{N}} \right)}} > 1}}} & (40)\end{matrix}$

The quotient in (40) is a random variable that follows anF-distribution. Some embodiments basically follow the description in(Press, Teukolsky, Vetterling, & Flannery, 1996). The probability thatF_(i) would be as large as it is if (N_(i)−{circumflex over(N)})^(j)P_({circumflex over (N)}) ⁻¹(N_(i)−{circumflex over (N)}) issmaller than (N₁−{circumflex over (N)})^(j)P_({circumflex over (N)})⁻¹(N₁−{circumflex over (N)}) is denoted as Q(F_(i)|v,v) whose relationto the beta function and precise algorithmic determination is given in(Press, Teukolsky, Vetterling, & Flannery, 1996). In other words,Q(F_(i)|v,v) is the significance level at which the hypothesis(N_(i)−{circumflex over (N)})^(j)P_({circumflex over (N)})⁻¹(N_(i)−{circumflex over (N)})<(N₁−{circumflex over(N)})^(j)P_({circumflex over (N)}) ⁻¹(N₁−{circumflex over (N)}) can berejected. Thus each candidate for which e.g. Q(F_(i)|v,v)≧0.05 can bedeclared as comparable good as N₁. The first candidate i₀+1 for whichQ(F_(i)|v,v)<0.05 is accepted as significantly worse than N₁.

Then all the components in the vectors N₁, N₂, . . . , N_(t) ₀ that havethe same value can be taken as reliable integer fixes. The components inwhich these ambiguity vectors differ should not be fixed to an integer.However, among these components there can exist certain linearcombinations that are the same for all vectors N₁, N₂, . . . , N_(t) ₀ .These linear combinations can also be reliably fixed to an integer.

In some embodiments determination of the best integer candidate vectorsis performed via the efficient LAMBDA method (Teunissen, 1995).

Best Integer Equivariant Approach:

In some embodiments the components of the high-dimensional ambiguityvector are fixed to float values that are given by a linear combinationof the best integer candidates. FIG. 20B shows the WL ambiguities aresent out (e.g. for use in the phase clock processor 335 or orbitprocessor 300).

In these embodiments the WL ambiguity state values 1435 are forwardedtogether with the ambiguity variance-covariance matrix 2210 from thefilter to an integer ambiguity searcher module 2320. Integer ambiguitysearcher module 2320 outputs a number of integer ambiguity candidatesets 2323 that are then forwarded to an ambiguity combiner module 2325that also gets the least squares ambiguity float solution 1435 and theambiguity variance-covariance matrix 2210 from the filter as an input.The least squares ambiguity float solution 1435 is used together withthe ambiguity variance-covariance matrix 2210 for forming a weight foreach integer ambiguity candidate. In the ambiguity combiner module 2325the weighted integer ambiguity candidates are summed up. The output is afixed WL ambiguity vector 2330 that can then be forwarded to the phaseclock processor 335 and orbit processor 330.

To derive the weights for the integer ambiguity vectors, note that theleast squares ambiguity float vector {circumflex over (N)} is theexpectation value of a multidimensional Gaussian probability functionp(N), i.e.

$\begin{matrix}{{\hat{N} = {\int\limits_{N \in R^{v}}{N\;{p(N)}{\mathbb{d}N}\mspace{14mu}{with}}}}{{p(N)} = \frac{{\mathbb{e}}^{{- \frac{1}{2}}{({N - \hat{N}})}^{t}{P_{\hat{N}}^{- 1}{({N - \hat{N}})}}}}{\int\limits_{N \in R^{v}}{{\mathbb{e}}^{{- \frac{1}{2}}{({N - \hat{N}})}^{t}{P_{\hat{N}}^{- 1}{({N - \hat{N}})}}}{\mathbb{d}N}}}}} & (41)\end{matrix}$

Thus an ambiguity expectation value that recognizes the integer natureof the ambiguities is given by

$\begin{matrix}{\overset{\Cup}{N}:={{\sum\limits_{N \in Z^{v}}{N\;{\overset{\Cup}{p}(N)}\mspace{14mu}{with}\mspace{14mu}{\overset{\Cup}{p}(N)}}} = \frac{{\mathbb{e}}^{{- \frac{1}{2}}{({N - \hat{N}})}^{t}{P_{\hat{N}}^{- 1}{({N - \hat{N}})}}}}{\sum\limits_{N \in Z^{v}}{\mathbb{e}}^{{- \frac{1}{2}}{({N - \hat{N}})}^{t}{P_{\hat{N}}^{- 1}{({N - \hat{N}})}}}}}} & (42)\end{matrix}$

Since the summation over the whole integer grid NεZ^(v) cannot becomputed in practice, the sum is in some embodiments restricted to thebest integer ambiguity candidates

$\begin{matrix}{{\overset{\Cup}{N} \approx {\sum\limits_{{i\mspace{14mu}{with}\mspace{14mu} F_{i}} < {1 + ɛ}}{N_{i}{\overset{\Cup}{p}\left( N_{i} \right)}\mspace{14mu}{with}}}}\;{{\overset{\Cup}{p}\left( N_{i} \right)} \approx \frac{{\mathbb{e}}^{{- \frac{1}{2}}{({N_{i} - \hat{N}})}^{t}{P_{\hat{N}}^{- 1}{({N_{i} - \hat{N}})}}}}{\sum\limits_{{i\mspace{14mu}{with}\mspace{14mu} F_{1}} < {1 + ɛ}}{\mathbb{e}}^{{- \frac{1}{2}}{({N_{i} - \hat{N}})}^{t}{P_{\hat{N}}^{- 1}{({N_{i} - \hat{N}})}}}}}} & (45)\end{matrix}$

with F_(i) from (40). The {hacek over (p)}(N_(i)) are the desiredweights for the best integer ambiguity candidates. Thereby a reasonablevalue for ε follows from the following consideration. In the sum in (42)ambiguity vectors N can be neglected if the relative weight to thelargest {hacek over (p)}(N) is small, i.e. if {hacek over (p)}(N)/{hacekover (p)}(N₁)≦δ with e.g. δ=e^(−q); q=25. In other words, all ambiguityvectors with {hacek over (p)}(N)/{hacek over (p)}(N₁)>δ have to berecognized. Writing out this condition for N=N_(i) with the definitionfor {hacek over (p)}(N) from (42) results in

$\begin{matrix}{{\left. \begin{matrix}{\mspace{79mu}{{\delta < \frac{\overset{\Cup}{p}\left( N_{i} \right)}{\overset{\Cup}{p}\left( N_{1} \right)}} = \frac{{\mathbb{e}}^{{- \frac{1}{2}}{({N_{i} - \hat{N}})}^{t}{P_{\hat{N}}^{- 1}{({N_{i} - \hat{N}})}}}}{{\mathbb{e}}^{{- \frac{1}{2}}{({N_{1} - \hat{N}})}^{t}{P_{\hat{N}}^{- 1}{({N_{1} - \hat{N}})}}}}}} \\{= {\mathbb{e}}^{{\frac{1}{2}{({N_{1} - \hat{N}})}^{t}{P_{\hat{N}}^{- 1}{({N_{1} - \hat{N}})}}} - {\frac{1}{2}{({N_{i} - \hat{N}})}^{t}{P_{\hat{N}}^{- 1}{({N_{i} - \hat{N}})}}}}}\end{matrix}\Leftrightarrow{\ln\;\delta} \right. = \left. {{- q} < {{\frac{1}{2}\left( {N_{1} - \hat{N}} \right)^{t}{P_{\hat{N}}^{- 1}\left( {N_{1} - \hat{N}} \right)}} - {\frac{1}{2}\left( {N_{i} - \hat{N}} \right)^{t}{P_{\hat{N}}^{- 1}\left( {N_{i} - \hat{N}} \right)}}}}\Leftrightarrow{\frac{- q}{\frac{1}{2}\left( {N_{1} - \hat{N}} \right)^{t}{P_{\hat{N}}^{- 1}\left( {N_{1} - \hat{N}} \right)}} < {1 - \frac{\frac{1}{2}\left( {N_{i} - \hat{N}} \right)^{t}{P_{\hat{N}}^{- 1}\left( {N_{i} - \hat{N}} \right)}}{\underset{\underset{= {:F_{i}}}{︸}}{\frac{1}{2}\left( {N_{1} - \hat{N}} \right)^{t}{P_{\hat{N}}^{- 1}\left( {N_{1} - \hat{N}} \right)}}}}}\mspace{79mu}\Leftrightarrow{F_{i} < {1 + \frac{q}{\frac{1}{2}\left( {N_{1} - \hat{N}} \right)^{t}{P_{\hat{N}}^{- 1}\left( {N_{1} - \hat{N}} \right)}}}} \right.}\mspace{79mu}{Thus}} & \mspace{11mu} \\{\mspace{79mu}{ɛ:=\frac{q}{\frac{1}{2}\left( {N_{1} - \hat{N}} \right)^{t}{P_{\hat{N}}^{- 1}\left( {N_{1} - \hat{N}} \right)}}}} & \;\end{matrix}$is a reasonable value for ε.

The {hacek over (p)}(N_(i)) are the desired weights for the best integerambiguity candidates. The ambiguity candidates themselves can bedetermined in an efficient way with the LAMBDA method (Teunissen, 1995).

Part 7.9 MW Bias Process: Using Fixed WL Ambiguities

FIG. 21A shows an embodiment 2400. In this way the estimated MW biases1430 are made consistent with the fixed WL ambiguities 2330. Thesefixed-nature MW satellite biases from the network are transferred to therover receiver where they help in fixing WL ambiguities.

The fixed WL ambiguities 2330 can be introduced into the processor 1225in several different ways. FIG. 21B, FIG. 21C and FIG. 21D show detailsof three possible realizations of the processor 1225 that differ in themanner of feeding back the fixed WL ambiguities into the MW biasestimation process.

In the embodiment 2400 the processor 1225 comprises a single sequentialfilter 2410 (such as a Kalman filter) that holds states 2415 forsatellite MW biases, states 2420 for WL ambiguities and—in case of theundifferenced observation model (11)—also states 2425 for receiver MWbiases. In the single differenced (SD) observation model (12) noreceiver bias states occur. In addition to these states, which containthe values of the least-squares best solution of the model parametersfor the given observations, the filter also contains variance-covariance(vc) information 2430 of the states. The vc-information is usually givenas a symmetric matrix and shows the uncertainty in the states and theircorrelations. It does not directly depend on the observations but onlyon the observation variance, process noise, observation model andinitial variances. However, since the observation variance is derivedfrom the observations when smoothing is enabled (see Part 7.3), therecan also be an indirect dependence of the vc-matrix 2430 on theobservations.

The filter input comprises MW observations (e.g., smoothed MWobservations 1420) and satellite MW-bias process noise 1240 (see Part7.2), a MW bias constraint 1605 (see Part 7.4), integer WL ambiguityconstraints 1705 (see Part 7.5) and, optionally, shifts from a bias andambiguity shifter 24 (discussed in Part 7.10).

The filter output of primary importance comprises the satellite MWbiases 1430, the (float) WL ambiguities 1430 and the (unconstrained) WLambiguity part 2210 of the vc-matrix 2430. The ambiguity information isforwarded to an ambiguity fixer module (see Part 7.8) that outputs(float or integer) fixed WL ambiguities 2310. These fixed WL ambiguities2310 are output for use in the orbit processor 330 and the phase clockprocessor 335. In addition, the fixed WL ambiguities 2310 arereintroduced into the filter by adding them as pseudo observations witha very small observation variance (of e.g. 10⁻³⁰ m²). The resultingsatellite MW biases 1430 are output to the rover and, optionally, to theorbit processor 330 and the phase clock processor 335. Since they areconsistent with the fixed WL ambiguities, we call them fixed MW biases.

Note that, if an ambiguity were fixed to a wrong integer, the wrongambiguity would remain in the filter 2410 until a cycle slip on thatambiguity occurs or it is thrown out of the filter (such as when it hasnot been observed anymore for a certain time period or another ambiguityhas taken over its ambiguity slot in the filter 2410). If this were tooccur the MW biases would be disturbed for a long time. However, anadvantage of this approach is that also ambiguity fixes remain in thefilter that have been fixed to integer when the satellites were observedat high elevations but having meanwhile moved to low elevations andcould not be fixed anymore or that are even no longer observed. Theseambiguity fixes on setting satellites can stabilize the solution of MWbiases a lot.

Note also that a float ambiguity should not be fixed with a very smallvariance (of e.g. 10⁻³⁰ m²) in the single filter 2410 since in this waynew observations cannot improve anymore the ambiguity states by bringingthem closer to an integer. In some embodiments the float ambiguity isfixed with a variance that depends on its distance to integer so thatthe observation variance tends to zero when the distance to the closestinteger tends to zero and tends to infinity when the distance to theclosest integer tends to 0.5. However, for fixing float ambiguities theapproaches used in the embodiments of FIG. 21C and FIG. 21D are moresuitable.

In the embodiment 2440 of FIG. 21C the processor 1225 comprises twosequential filters 2445 and 2450 where the process flow for the firstfilter 2445 is almost identical with the filter 2410 of FIG. 21B. Thedifference is that no fixed WL ambiguities 1430 are fed back into filter2445. Instead, each time new fixed WL ambiguities 2310 are available(e.g. after each observation update), a filter copy 2450 of the firstfilter 2445 is made and then the fixed WL ambiguities 2310 areintroduced as pseudo-observations into the filter copy 2450. Theoriginal filter 2445 thus remains untouched so that no wrong fixes canbe introduced into it. The filter copy 2450 outputs fixed satellite MWbiases 2455 (e.g., as MW biases 345).

A disadvantage of this approach is that only currently observedambiguities can be fixed and introduced into the filter copy 2550. Allprior ambiguity fixes are lost. However, this is a preferred way ofprocessing when the whole ambiguity space is analyzed at once as it isdone in the integer least squares partial fixing and integer candidatecombination approaches (see Part 7.8).

Embodiment 2460 of FIG. 21D shows an alternative approach to feed thefixed WL ambiguities into the estimation process. Here the fixed WLambiguities 2310 are forwarded to an ambiguity subtracter module 2665that reduces the MW observations 1420 by the ambiguities. The resultingambiguity-reduced MW observations 2670 are put into a second filter 2475that does not have any ambiguity states but only satellite MW biasstates 2480 and—in the undifferenced approach (11)—also receiver MW biasstates 2485. This second filter 2475 just needs a single MW biasconstraint 2490 and process noise on satellite MW biases 2480 asadditional inputs. In case biases are shifted in the first filter 2440they also have to be shifted in the second filter 2475.

The second filter 2475 outputs fixed satellite MW biases 2450.

Note that in this approach the ambiguities are not fixed with a verysmall observation variance (of e.g. 10⁻³⁰ m²) but only with the usualobservation variance of the MW observations. By inserting observationsover time with the same fixed ambiguity, the weak ambiguity constraintis more and more tightened. All prior ambiguity fixes remain in thefilter to some extent. A wrong fix that is detected after some time willbe smoothed out. Thus it is also quite reasonable to putfloat-ambiguity-reduced MW observations into the filter.

Since the second filter 2475 does not have ambiguity states that buildthe majority of states in the first filter, the second filter 2475 isvery small and can be updated at a very high rate of, e.g. every second,without running into performance problems. Thus in some embodiments theoriginal MW observations without any prior smoothing are input into thisfilter.

Part 7.10 MW Bias Process: Shifting MW Biases

FIG. 22A shows an embodiment 2500 in which the process described in Part7.8 is augmented with an external satellite MW bias shifter module 2505.The term external means, in contrast to the shifting module shown inFIG. 22C where the shifting is applied on the filter. Note that all theambiguity constraining and fixing related steps as well as thecorrection and smoothing steps are optional.

The bias shifter module 2505 shifts the satellite MW biases 1430 toproduce satellite MW biases 2510 in a desired range of at least one WLcycle. This is possible since as seen from Equation (11) a shift in asatellite bias by n WL cycles are absorbed by the WL ambiguitiescorresponding to this satellite, e.g.

$\begin{matrix}\begin{matrix}{{\Phi_{i,{WL}}^{j} - P_{i,{NL}}^{j}} = {b_{i,{MW}} - b_{MW}^{j} + {\lambda_{WL}N_{i,{WL}}^{j}}}} \\{= {b_{i,{MW}} - \underset{\underset{= {:{\overset{\sim}{b}}_{MW}^{j}}}{︸}}{\left( {b_{MW}^{j} + {n\;\lambda_{WL}}} \right)} + {\lambda_{WL}\underset{\underset{= {:{\overset{\sim}{N}}_{i,{WL}}^{j}}}{︸}}{\left( {N_{i,{WL}}^{j} - n} \right)}}}}\end{matrix} & (46)\end{matrix}$Similar shifts are possible for receiver biases.

FIG. 22B shows the impact of shifting MW biases as in equation (46).Each MW combination is depicted in FIG. 22B as the distance between areceiver (e.g., one of receivers 2525, 2530, 2535, 2540) and a satellite2545. This distance is represented by the sum of a receiver bias (whichis the same for all satellites and therefore visualized as a circlearound the receiver such as 2550), a satellite bias (that is the samefor all receivers and therefore visualized as a circle 2555 around thesatellite) and an ambiguity (that depends on the receiver-satellite pairand is therefore visualized as a bar such as bar 2560 for the pairing ofreceiver 2525 and satellite 2545). Reducing the satellite bias by thewavelength of one WL cycle (as depicted by smaller circle 2565)increases all related ambiguities by the wavelength of one WL cycle. Thereceiver biases are untouched by this operation.

An advantage of shifting satellite MW biases into a defined range isthat in this way the biases can be encoded with a fixed number of bitsfor a given resolution. This allows to reduce the necessary bandwidthfor transferring satellite MW biases to the rover which is in someembodiments done over expensive satellite links.

Although all satellite biases b_(MW) ^(j)/λ_(WL) can be mapped for acertain fixed time e.g. into the range [−0.5, +0.5[it is preferable toextend this range e.g. to [−1, +1[in order to avoid frequent jumps inthe MW satellite biases when they leave the defined range. Due to theoscillating behavior of MW satellite biases, the satellite biases at theborder of the defined range close to −0.5 or +0.5 might often leave thisrange. For example, a bias moving to −0.5−ε is then mapped to +0.5−ε.Then the bias oscillates back to +0.5+ε and is then mapped back to−0.5+ε. In practice, it has been found that with a range of [−1, +1[bias jumps can be avoided for several months.

Note that MW bias jumps can also be handled at the rover by comparingthe latest received MW bias value with the previous one. If the valuesdiffer by approximately one cycle a bias jump is detected and thecorrect bias reconstructed. The situation is complicated by the factthat WL ambiguities consistent with shifted satellite MW biases are usedin the phase clock processor to determine iono-free (IF) biases that arealso sent to the rover. Reconstructing the MW bias at the rover after ajump requires also an adaptation of the IF bias by ½(λ_(WL)−λ_(NL)).

FIG. 22C shows an alternative to the external satellite MW bias shiftermodule 2505 of FIG. 22A. Satellite MW biases 1430 and WL-ambiguities1435 are sent to an internal shifter module 2580 that determines on thebasis of equation (46) shifts for MW biases and WL ambiguities such thatthe biases are mapped to the desired range. Then all these shifts areapplied to the bias and ambiguity states in the filter. In this waybiases have to be shifted only once while in the approach of FIG. 22Athe shifts are repeated each time satellite MW biases are output.

However, note that unshifted and shifted WL ambiguities are not allowedto be used at the same time in a single filter. This is e.g. importantwhen WL ambiguities are forwarded to the orbit processor 330 for fixingIF ambiguities. If fixed IF ambiguities are reintroduced into a singleoriginal filter (and no filter copy as in FIG. 21C is used), WLambiguities of different epochs come together in the filter. It has tobe ensured that the WL ambiguities of different epochs are the same. Ifthis is not the case the corresponding IF ambiguity is reset.

Part 7.11 MW Bias Process: Numerical Examples

The behavior of daily solutions for MW satellite biases was monitoredover a time period of 61 days in June and July 2008 and the differenceof each daily solution to the first day of this period (June 1). PRN 16was chosen as the reference satellite with bias value 0. All biases weremapped into the interval [0,1]. Drifts of different sizes in thesatellite biases are clearly detectable. All the larger drifts occur forblock IIA satellites. Individual satellites show drifts of about 0.2 WLcycles within a month. These values would motivate a satellite biasupdate of perhaps once per day. However, for PRN 24 there is a suddenbias jump on June 26 of almost 0.2 WL cycles. The occurrence of suchevents demonstrates the importance of real-time estimation andtransmission of MW satellite biases.

In another example the MW satellite biases for the time period from Oct.2 to 14, 2008 were continuously processed in a Kalman filter. Again PRN16 was chosen as the reference. The result shows that each satellite hasits own daily pattern with some kind of repetition already after 12hours (the time a GPS satellite needs for one revolution). Thevariations of the satellite biases are up to about 0.16 WL cycles within6 hours. The difference of the MW satellite biases to the values theyhad 24 hours before demonstrates that the day to day repeatability isusually below 0.03 WL cycles. However, this day to day repeatabilitydoes not well reflect the large inner day variations of the MW satellitebiases.

The filtered satellite WL biases are dependent on their process noiseinput. With a noise input variance between 10⁻⁶ and 10⁻⁷ squared WLcycles per hour the periodical behavior and the sudden bias level changeon June 26 is well reflected. With less noise input these patterns arenot detected. Due to this analysis a process noise input variance of5·10⁻⁷ squared WL cycles per hour on satellite WL biases is recommended.

Part 7.12 MW Bias Process: References

References relating to the MW bias process include the following:

-   Bierman, G. J. (1977). Factorization Methods for Discrete Sequential    Estimation. New York: Academic Press, Inc.-   Collins, P. (2008). Isolating and Estimating Undifferenced GPS    Integer Ambiguities. Proceedings of ION-NTM-2008, (pp. 720-732). San    Diego, Calif.-   Collins, P., Gao, Y., Lahaye, F., Héroux, P., MacLeod, K., &    Chen, K. (2005). Accessing and Processing Real-Time GPS Corrections    for Precise Point Positioning—Some User Considerations. Proceedings    of ION-GNSS-2005, (pp. 1483-1491). Long Beach, Calif.-   Collins, P., Lahaye, F., Héroux, P., & Bisnath, S. (2008). Precise    Point Positioning with Ambiguity Resolution using the Decoupled    Clock Model. Proceedings of ION-GNSS-2008. Savannah, Ga.-   Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2001).    Chapter 23: Minimum Spanning Trees. In Introduction to Algorithms    (Second Edition ed., pp. 561-579). MIT Press and McGraw-Hill.-   Datta-Barua, S., Walter, T., Blanch, J., & Enge, P. (2007). Bounding    Higher Order Ionosphere Errors for the Dual Frequency GPS User.    Radio Sci., 43, RS5010, doi:10.1029/2007RS003772.-   Ge, M., Gendt, G., Rothacher, M., Shi, C., & Liu, J. (2008).    Resolution of GPS carrier-phase ambiguities in Precise Point    Positioning (PPP) with daily observations. Journal of Geodesy, Vol.    82, pp. 389-399.-   Grewal, M. S., & Andrews, A. P. (2001). Kalman Filtering: Theory and    Practice Using MATLAB. New York: Wiley-Interscience.-   Héroux, P., & Kouba, J. (2001). GPS Precise Point Positioning Using    IGS Orbit Products. Phys. Chem. Earth (A), Vol. 26 (No. 6-8), pp.    572-578.-   Laurichesse, D., & Mercier, F. (2007). Integer ambiguity resolution    on undifferenced GPS phase measurements and its application to PPP.    Proceedings of ION-GNSS-2007, (pp. 839-448). Fort Worth, Tex.-   Laurichesse, D., Mercier, F., Berthias, J., & Bijac, J. (2008). Real    Time Zero-difference Ambiguities Fixing and Absolute RTK.    Proceedings of ION-NTM-2008, (pp. 747-755). San Diego, Calif.-   Melbourne, W. (1985). The case for ranging in GPS-based geodetic    systems. Proceedings of the First International Symposium on Precise    Positioning with the Global Positioning System. Vol. 1, pp. 373-386.    Rockville, Md.: US Dept. of Commerce.-   Mervart, L., Lukes, Z., Rocken, C., & Iwabuchi, T. (2008). Precise    Point Positioning With Ambiguity Resolution In Real-Time.    Proceedings of ION-GNSS-2008. Savannah, Ga.-   Morton, Y., van Graas, F., Zhou, Q., & Herdtner, J. (2008).    Assessment of the Higher Order Ionosphere Error on Position    Solutions. ION GNSS 21st International Meeting of the Satellite    Division. Savannah, Ga., USA.-   Press, W. H., Teukolsky, S. A., Vetterling, W. T., & Flannery, B. P.    (1996). F-Distribution Probability Function. In Numerical Recipes in    C (p. 229). Cambridge University Press.-   Schaer, S. (2000, May 9). IGSMAIL-2827: Monitoring (P1-C1) code    biases. Retrieved from    http://igscb.jpl.nasa.gov/mail/igsmail/2000/msg00166.html.-   Teunissen, P. (1995). The least-squares ambiguity decorrelation    adjustment: a method for fast GPS integer ambiguity estimation.    Journal of Geodesy, Vol. 70, No. 1-2, pp. 65-82.-   Wübbena, G. (1985). Software Developments for Geodetic Positioning    with GPS using TI 4100 code and carrier measurements. Proceedings of    the First International Symposium on Precise Positioning with the    Global Positioning System. Vol. 1, pp. 403-412. Rockville, Md.: US    Dept. of Commerce.-   Zumberge, J., Heflin, M., Jefferson, D., Watkins, M., & Webb, F.    (1997). Precise point positioning for the efficient and robust    analysis of GPS data from large networks. Journal of Geophysical    Research, Vol. 102 (No. B3), pp. 5005-5018.    Part 8: Orbit Processor

Precise (cm-accurate) orbits allow precise satellite clock estimationand precise positioning. Orbit accuracy has a direct influence on thefinal position accuracy of the rover using precise satellite orbits andclocks data as described herein.

Part 8.1 Option 1: Use IGS-Published Ultra-Rapid Orbits

The International GNSS Service (IGS) provides predicted satellite orbitswhich can be downloaded via the Internet. A description of these orbitscan be found in J. KOUBA, A GUIDE TO USING INTERNATIONAL GPS SERVICE(IGS) PRODUCTS, Geodetic Survey Division, Natural Resources Canada,February 2003, 31 pages and athttp://igscb.jpl.nasa.gov/components/prods.html.

The IGS Ultra-rapid (predicted) orbits, also called IGU orbits, aregenerated and published four times a day at 3, 9, 15, 21 hours of theUTC day. IGS claims a 5 cm orbit standard deviation, though our analyseshave shown that individual satellite orbit errors can go up to 60 cm. Inone case we have seen a 2 meter error.

Market requirements for commercial positioning service demand preciseorbits with errors less than 3 cm and with high reliability andavailability. The currently available IGU orbits do not meet theserequirements. Nevertheless, they are useful either for positioningapplications where the requirements are less demanding, or as acountercheck to detect gross errors in orbits estimated as describedbelow.

Part 8.2 Option 2: Determine Satellite Orbits in Real Time

Referring to FIG. 1, observation data is streamed in real time fromglobally distributed GNSS reference stations, such as reference stations105, 110, 115, to network processor 140. In some embodiments, thenetwork processor estimates the satellite orbits in real time using aKalman-filter approach in a numerically stable UD-Filter implementationas described in G. Bierman, Factorization Methods for DiscreteSequential Estimation, Academic Press, Inc., New York, 1977. Hereafterthe term real time refers to processing immediately after observationdata is available, typically in less than one second. The time-dependentfilter state x(t) is set up in the following way

x_(cr)(t) receiver clock errors

x_(cs)(t) satellite clock errors

x_(qs)(t) satellite dependent orbit parameters

x(t)=x_(r) (t) receiver positions

x_(ZDT)(t) zenith tropospheric delays for each station

x_(EOP)(t) earth orientation parameters

(EOP: x_(p), y_(p), UT1-UTC or length of day)

x_(AMB) carrier-phase ambiguities

x_(if-bias) iono-free biases

where

x_(cr)(t) is the vector with all receiver clock errors in the network.Each station has at least one clock offset but may have also drift anddrift rates, depending on the type and stability of the station clock.The receiver clocks are modeled, for example, as white noise processesor as stochastic processes (e.g., random walk, Gauss Markov) dependingon the type and stability of the station clock.

x_(cs)(t) is the vector with the satellite clocks. The vector contains aclock offset and a drift but may have drift and drift rates depending onthe type and stability of the satellite clock (Rubidium, Cesium orHydrogen maser). The satellite clocks are modeled, for example, as whitenoise processes or as stochastic processes depending on the type andstability of the satellite clock.

x_(qs)(t) is the vector with the satellite dependent dynamic orbitparameters. This includes the satellite positions and velocities andadditional force model parameters, which are

$\begin{matrix}{{x_{qs}(t)} = \begin{bmatrix}{x_{s}(t)} \\{{\overset{.}{x}}_{s}(t)} \\{x_{sir}(t)} \\{x_{harm}(t)}\end{bmatrix}} & (47)\end{matrix}$

where

x_(s)(t) is the satellite position vector (one per satellite) in theinertial reference frame (X,Y,Z).

{dot over (x)}_(s)(t) is the satellite velocity vector (one persatellite) in the inertial reference frame (X,Y,Z).

x_(slr)(t) is the vector with the solar radiation pressure parameters.It consists of a component in the sun-satellite direction, a secondcomponent in the direction of the solar radiation panel axis and a thirdcomponent perpendicular on the first 2 axes. All three components aremodeled for example as stochastic processes.

x_(harm)(t) is the vector with harmonic coefficients for the orbitcomponents along-track, radial and cross-track or in a satellite bodyfixed coordinate system. They are modeled for example as stochasticprocesses.

x_(r) (t) is the station position vector in the Earth centered/Earthfixed reference frame. Stations can be either fixed or unknown in theestimation process.

x_(ZTD)(t) is the vector with the tropospheric zenith delays estimatedfor each station. Tropospheric gradients are optionally also estimated.These parameters are modeled for example as stochastic processes.

x_(EOP)(t) are earth orientation parameters (EOPs) estimated routinelyin real time. The vector consists of the offsets to the conventionalpole (x_(p), y_(p)) and the difference between UT1 and UTC time scales(UT1-UTC or length of day). The precisely-known EOP parameters are usedto transition between the inertial and the earth-fixed reference frames.All three parameters are estimated for example as stochastic processes.

x_(AMB) each satellite-station link has an individual carrier phaseambiguity in the filter state. These parameters are modeled for exampleas constants.

x_(if-bias) ionospheric-free code-carrier biases, one bias perreceiver-satellite pair. Code and carrier have biases, which aredifferent from receiver to receiver and satellite to satellite and mightvary with time These parameters are modeled for example via stochasticprocesses.

The ionospheric-free dual-frequency combinations of code and carrierobservations have different biases, which vary with time. While theseparameters can be estimated as additional unknowns in the orbitprocessor Kalman filter, they are optionally estimated in a separateprocessor (e.g. in standard clock processor 320 as ionospheric-freecode-carrier biases 372, shown in FIG. 3) and applied to the pseudorangeobservations used in the orbit processor.

For linearization purposes, some embodiments have the filter set up toestimate differences to a reference trajectory and to initial forcemodel parameters. In these embodiments the state vector for eachsatellite is

$\begin{matrix}{{x_{qs}\left( t_{k} \right)} = {\begin{bmatrix}{{r\left( t_{k} \right)} - {r_{0}\left( t_{k} \right)}} \\{{p\left( t_{k} \right)} - {p_{0}\left( t_{k} \right)}} \\{y - y_{0}}\end{bmatrix} = \begin{bmatrix}{\Delta\;{r\left( t_{k} \right)}} \\{\Delta\;{p\left( t_{k} \right)}} \\{\Delta\; y}\end{bmatrix}}} & (48)\end{matrix}$

where

x_(qs)(t_(k)) is the satellite state vector at time t_(k)

r(t_(k)) is the satellite position and velocity in the inertialreference frame

r₀(t_(k)) represents the reference trajectory created by a numericalorbit integrator

p(t_(k)) is the vector with stochastic force model parameters

p₀(t_(k)) is the vector with approximate initial stochastic force modelparameters

y is the vector with constant force model parameters

y₀ is the vector with approximate constant force model parameters

and where

$\begin{matrix}{{r\left( t_{k} \right)} = \begin{bmatrix}{x_{x}\left( t_{k} \right)} \\{{\overset{.}{x}}_{x}\left( t_{k} \right)}\end{bmatrix}} & (49)\end{matrix}$

The prediction in the filter model for the satellite dependent part isdone via the following relation

$\begin{matrix}{\begin{bmatrix}{\Delta\;{r\left( t_{k + 1} \right)}} \\{\Delta\;{p\left( t_{k + 1} \right)}} \\{\Delta\; y}\end{bmatrix} = {\quad{{\begin{bmatrix}{\Phi_{rr}\left( {t_{k + 1},t_{k}} \right)} & {\Phi_{rp}\left( {t_{k + 1},t_{k}} \right)} & {\Phi_{ry}\left( {t_{k + 1},t_{k}} \right)} \\0 & M_{k} & 0 \\0 & 0 & 1\end{bmatrix}\left\lbrack \begin{matrix}{\Delta\;{r\left( t_{k} \right)}} \\{\Delta\;{p\left( t_{k} \right)}} \\{\Delta\; y}\end{matrix} \right\rbrack} + {\quad\begin{bmatrix}0 \\w_{k} \\0\end{bmatrix}}}}} & (50)\end{matrix}$with

$\begin{matrix}{{{\Phi_{rr}\left( {t_{k + 1},t_{k}} \right)} = \left\lbrack \frac{\partial{r\left( t_{k + 1} \right)}}{\partial{r\left( t_{k} \right)}} \right\rbrack},{{r(t)} = {r_{0}(t)}}} & (51) \\{{{\Phi_{rp}\left( {t_{k + 1},t_{k}} \right)} = \left\lbrack \frac{\partial{r\left( t_{k + 1} \right)}}{\partial{p\left( t_{k} \right)}} \right\rbrack},{{r(t)} = {r_{0}(t)}},{{p(t)} = {p_{0}(t)}}} & (52) \\{{{\Phi_{ry}\left( {t_{k + 1},t_{k}} \right)} = \left\lbrack \frac{\partial{r\left( t_{k + 1} \right)}}{\partial y} \right\rbrack},{{r(t)} = {r_{0}(t)}},{y = y_{0}}} & (53)\end{matrix}$

These matrices are computed for example by integration of thevariational equations as described in the section below on numericalorbit integration.

M_(k) is the matrix describing the stochastic noise modeling

w_(k) is the noise input

Part 8.3 Numerical Orbit Integration

The satellite motion in orbit can be described by a second orderdifferential equation system{umlaut over (x)}={umlaut over (x)}(x,{dot over (x)},q)  (54)

with

{umlaut over (x)} acceleration in the inertial reference frame

x position in the inertial reference frame

{dot over (x)} velocity in the inertial reference frame

q vector of satellite dependent force model unknowns and initialposition/velocity

The vector q is defined as

$\begin{matrix}{q = \begin{bmatrix}{r\left( t_{0} \right)} \\a\end{bmatrix}} & (55)\end{matrix}$

where

r(t₀) are the initial position and velocity in inertial reference frame

a is the vector with dynamic force model parameters

Satellite position x(t) and velocity {dot over (x)}(t) at time t arederived from satellite position x(t₀) and velocity {dot over (x)}(t₀) attime t₀ using, for example, a numerical integration (apredictor-corrector method of higher order).{dot over (x)}(t)={dot over (x)}(t ₀)+∫{umlaut over (x)}(t)dt  (56)x(t)=x(t ₀)+∫{dot over (x)}(t)dt  (57)

The real-time filter uses the partial derivatives of the accelerations{umlaut over (x)}(t) with respect to the unknown parameters q

$\begin{matrix}{\left\lbrack \frac{\partial\overset{¨}{x}}{\partial q} \right\rbrack = {\left\lbrack \frac{\partial\overset{¨}{x}}{\partial x} \right\rbrack\left\lbrack \frac{\partial x}{\partial q} \right\rbrack}} & (58)\end{matrix}$

The equation of this example ignores derivatives with respect tosatellite velocity since there are no relevant velocity-dependent forcesacting on GNSS satellites in medium earth orbit.

The following matrix is computed for epoch t₁:

$\begin{matrix}{{\Phi_{rq}\left( {t_{i},t_{0}} \right)} = \begin{bmatrix}\frac{\partial x}{\partial{q\left( {t_{i},t_{0}} \right)}} \\\frac{\partial\overset{.}{x}}{\partial{q\left( {t_{i},t_{0}} \right)}}\end{bmatrix}} & (59)\end{matrix}$

The matrix for the next epoch t_(i+1) can then be computed via the chainruleΦ_(rq)(t _(i+1) ,t ₀)=Φ_(rq)(t _(i+1) ,t _(i))Φ_(rq)(t _(i) ,t ₀)  (60)

The partial derivatives of the observations with respect to the unknownsq can again be derived via chain rule

$\begin{matrix}{\frac{\partial l}{\partial q} = {\frac{\partial l}{\partial r}\Phi_{rq}}} & (61)\end{matrix}$These partials are used in the observation update of the filter.

The following models are used to compute the accelerations z acting onthe satellite; some embodiments use these for the integration process:

1. The Earth's gravity field is modeled by available models such as theEIGEN-CG01C or the EGM96 model. These are spherical harmonic expansionswith very high resolution. Some embodiments use up to degree and order12 for orbit integration.

2. Gravitational forces due to the attraction by sun, moon and planets.

3. The gravitational forces of sun and moon acting on the Earth's figurewill deform the Earth. This effect also changes the gravity field; it iscalled “Solid Earth Tide” effect. Some embodiments follow therecommendations of the IERS Conventions 2003.

4. Some embodiments account for the Solid Earth Pole Tide, caused by thecentrifugal effect of polar motion. This tide must not be confused withSolid Earth Tides. Some embodiments follow the recommendations of theIERS Conventions 2003.

5. The gravitational forces of sun and moon acting on the oceans willchange the gravity field; this is called the “Ocean Tide” effect. Someembodiments use the CSR3.0 model recommended by the IERS Conventions2003.

6. Some embodiments also consider the relativistic acceleration, whichdepends upon position and velocity of the satellite.

7. The solar radiation pressure, the acceleration acting on GNSSsatellites, is most difficult to model. Some embodiments consider threecomponents: a first component in the sun-satellite direction, a secondcomponent in the direction of the solar radiation panel axis (y-bias)and a third component perpendicular to the first two axes.

8. Some embodiments also model residual errors mainly induced by theinsufficient knowledge of the force models via harmonic functions asdescribed in the following.

GNSS satellites like GPS, GLONASS, GALILEO and COMPASS satellites are inmid earth orbits (MEO) of approximately 26000 km. The following tableshows the accelerations acting on GNSS satellites and their effectsafter a one-day orbit integration.

Orbit prediction Acceleration error after Perturbation [m/s²] one day[m] Earth's gravitation 0.59 330000000 Earth's oblateness 5 · 10⁻⁵ 24000Lunar direct tides 5 · 10⁻⁶ 2000 Solar direct tides 2 · 10⁻⁶ 900 Higherdegree terms in geopotential 3 · 10⁻⁷ 300 Direct solar radiationpressure 9 · 10⁻⁸ 100 Radiation pressure along solar panel 5 · 10⁻¹⁰ 6axis Earth albedo (solar radiation due to 3 · 10⁻⁹ 2 reflection byearth) Solid Earth tides 1 · 10⁻⁹ 0.3 Ocean tides 1 · 10⁻¹⁰ 0.06 Generalrelativity 3 · 10⁻¹⁰ 0.3 Venus in lower conjunction 2 · 10⁻¹⁰ 0.08

Part 8.4 Harmonic Force Modeling

Some embodiments handle residual errors by introducing a harmonic modelhaving a cosine term and a sine term in each of the along-track, radialand cross-track directions. As the residuals have a period of about onerevolution of the satellite about the Earth, the harmonics depend on theargument of latitude of the satellite:

$\begin{matrix}{{\overset{¨}{\overset{\rightarrow}{x}}}_{residual} = {\begin{pmatrix}{{A_{1}\cos\; u} + {A_{2}\sin\; u}} \\{{A_{3}\cos\; u} + {A_{4}\sin\; u}} \\{{A_{5}\cos\; u} + {A_{6}\sin\; u}}\end{pmatrix} = {\begin{pmatrix}A_{1} & A_{2} \\A_{3} & A_{4} \\A_{5} & A_{6}\end{pmatrix}\begin{pmatrix}{\cos\; u} \\{\sin\; u}\end{pmatrix}}}} & (62)\end{matrix}$

with

A₁, A₂ . . . amplitudes to be estimated for along-track

A₃, A₄ . . . amplitudes to be estimated for cross-track

A₅, A₆ . . . amplitudes to be estimated for radial component

u . . . argument of latitude of the satellite

Alternatively to the use of along track, cross track and radialcomponents, the satellite related system (sun-satellite direction, solarpanel direction and the normal to both) can be used, to model solarradiation pressure.

Part 8.5 Transformation from Inertial to Earth-Fixed Reference Frame

Some embodiments transform from Inertial to the Earth-fixed referenceframe using the IAU 2000A precession/nutation formulas, which follow theIERS Conventions 2003.

Part 8.6 Earth Orientation Parameters

Some embodiments take Earth orientation parameters (EOPs) from the IERSrapid files GPSRAPID.DAILY. These files are provided by IERS on a dailybasis and are based on the combination of the most recently availableobserved and modeled data (including VLBI 24-hour and intensive, GPS,and AAM (Atmospheric Angular Momentum)). The combination processinvolves applying systematic corrections and slightly smoothing toremove the high frequency noise. GPSRAPID.DAILY contains the values forthe last 90 days from Bulletin A for x/y pole, UT1-UTC, dPsi, dEps, andtheir errors and predictions for next 15 days at daily intervals.

After the interpolation, UT1 is corrected for diurnal and/or semidiurnalvariations due to Ocean Tides. The polar motion angles are corrected fordiurnal variations due to tidal gravitation for a non-rigid Earth, aswell as for diurnal and/or semidiurnal variations due to Ocean Tides.Corrections are computed according to:

$\begin{matrix}{{{\Delta\; A} = {{\sum\limits_{j}{B_{Af}\sin\;\theta_{f}}} + {C_{Af}\cos\;\theta_{f}}}},{A \in \left\{ {{{UT}\; 1},x_{P},y_{P}} \right\}}} & (63)\end{matrix}$

Amplitudes B_(Af), C_(Af) for 41 diurnal and 30 semi-diurnal Ocean Tidalconstituents are listed in tables 8.2 and 8.3 in the IERS Conventions(2003). The EOPs from the GPSRAPID.DAILY are introduced as approximatevalues for the real-time estimation process, keeping linearizationerrors at a minimum.

Part 8.7 Startup of the Real-Time System

When starting the system for the first time or after interruptions ofmore than a day, some embodiments derive initial values for satelliteposition velocity and force model parameters using satellite broadcastephemerides or IGU orbits. Some embodiments use a least-squares fit toadapt a numerically integrated orbit to the broadcast elements from thesatellite navigation message or to the IGU orbit for the satellite. Theadapted orbit initial state is then integrated for a time period of upto two days into the future. The satellite positions, velocities andpartials are stored in a “partials” file for use by the real-timesystem.

FIG. 23A shows an embodiment of the startup process 2600 for thereal-time orbit processor. An orbit integrator 2605 predicts the orbitalstates (position and velocity) of each satellite into the futurestarting from an approximate orbit vector 2615, an initial state takenfor example from the broadcast satellite ephemeris or the IGSultra-rapid orbit IGU by using numerical integration and modeling allrelevant forces acting on the satellites, e.g., predicted Earthorientation parameters from IERS. During this process an orbitprediction 2620 is generated, which holds all predicted orbital statesand the partial derivatives. In a next step an adaptation process fitsthe predicted orbit to the broadcast orbit or IGU orbit via a leastsquares batch process. This process is iterated until the initialorbital states for the satellites are no longer changing. Then thepartials file 2620 is forwarded to the real-time real-time orbit process2630 of FIG. 26B.

FIG. 23B shows an embodiment of a real-time orbit process 2630. Process2630 obtains values for an initial start vector 2635 from partials file2635; these values are used to construct predicted observations for aniterative filter 2640 on a regular basis, e.g., every 150 seconds.Iterative filter 2640 is, for example, a classical Kalman filter or a UDfactorized filter or a Square Root Information Filter (SRIF} The orbitstart vector 2635 contains the partial derivatives of the current orbitstate and force model parameters with respect to the start vector andEOPs and are used to map the partials of the observations to the startvector and force model unknowns. Kalman filter 2640 receives iono-freelinear combinations 2645 of observation data from the reference stationsin real time, e.g., each epoch, such as once per second, and predictedEarth orientation parameters (EOP) 2610. With each observation update,Kalman filter 2640 provides improved values for the state vectorparameters: receiver clocks 2655 (one per station), zenith troposphericdelays 2660 (one per station), satellite clocks 2665 (one persatellite), optional satellite clock rates 2670 (one per satellite), andorbit start vectors 2680 (one orbit start vector per satellite). In theembodiment of FIG. 23B, orbit state vector 2680 is supplied from time totime (e.g., each epoch, such as once per second) and mapped via theorbit mapper 2682 to the current-epoch orbit position/velocity vector350.

Orbit mapper 2682 uses the partial derivatives from the partials fileand the following relationship to derive satellite position and velocityat the current epoch t, from the state vector at epoch t₀ (FIG. 23C).

$\begin{matrix}{{r\left( t_{i} \right)} = {{{r_{0}\left( t_{i} \right)} + {{\Phi_{rq}\left( {t_{i},t_{0}} \right)}{x_{qs}\left( t_{0} \right)}}} = {{r_{0}\left( t_{i} \right)} + {\left\lbrack {\frac{\partial{r\left( t_{i} \right)}}{\partial{r\left( t_{0} \right)}}\frac{\partial{r\left( t_{i} \right)}}{\partial{p\left( t_{0} \right)}}\frac{\partial{r\left( t_{i} \right)}}{\partial y}} \right\rbrack\left\lbrack \begin{matrix}{\Delta\;{r\left( t_{0} \right)}} \\{\Delta\;{p\left( t_{0} \right)}} \\{\Delta\; y}\end{matrix} \right\rbrack}}}} & (64)\end{matrix}$

with

r₀ (t_(i)) . . . reference trajectory (position and velocity) created bya numerical orbit integrator

Φ_(rq)(t_(i), t₀) . . . partials of the position and velocity at t_(i)with respect to the start vector

x_(qs) (t₀) . . . at t_(i) estimated difference of the start vector(state vector) at t₀

Next r(t_(i)) which is given in the inertial reference frame istransformed into the Earth centered/Earth fixed reference frame.

The current-epoch orbit position/velocity vector 350 in the Earthcentered/Earth fixed reference frame is forwarded to the standard clockprocessor 320, to the phase clock processor 335 and to the scheduler 355of FIG. 3.

Some embodiments of process 2630 avoid linearization errors byrestarting the numerical integration in an orbit integrator 2685 fromtime to time, such as every 6 or 12 or 24 hours. Orbit mapper 2684 usesthe partial derivatives from the partials file and the followingrelationship to derive a new orbit state vector 2690 in the inertialreference frame at time t₀+x hours from the start vector at epoch t₀(FIG. 23D).

$\begin{matrix}{{r\left( t_{i} \right)} = {{{r_{0}\left( t_{i} \right)} + {{\Phi_{rq}\left( {t_{i},t_{0}} \right)}{x_{qs}\left( t_{0} \right)}}} = {{r_{0}\left( t_{i} \right)} + {\left\lbrack {\frac{\partial{r\left( t_{i} \right)}}{\partial{r\left( t_{0} \right)}}\frac{\partial{r\left( t_{i} \right)}}{\partial{p\left( t_{0} \right)}}\frac{\partial{r\left( t_{i} \right)}}{\partial y}} \right\rbrack\left\lbrack \begin{matrix}{\Delta\;{r\left( t_{0} \right)}} \\{\Delta\;{p\left( t_{0} \right)}} \\{\Delta\; y}\end{matrix} \right\rbrack}}}} & (65)\end{matrix}$

with

r₀(t_(i)) . . . reference trajectory (position and velocity) created bya numerical orbit integrator

Φ_(rq)(t_(i),t₀) . . . partials of the position and velocity at t, withrespect to the start vector

x_(qs) (t₀)) . . . at t_(i) estimated difference of the start vector(state vector) at t₀

Predicted EOPs 2610 (e.g., from IERS) and estimated EOPs together withupdated new orbit start vector 2690 are used as inputs to orbitintegrator 2685 to transform coordinates between the inertial frame andthe earth-fixed frame, e.g., following the IERS Conventions.

This numerical integration runs in the background and generates a newpartials file 2635 which is used to update the predicted observations ofKalman filter 2640. The start vector for the numerical integration oforbit integrator 2675 is for example the latest best estimate of thereal-time system, orbit start vector 2690.

Part 8.8 Fixing Ambiguities in Real-Time Orbit Determination

Kalman filter 2640 uses the ionospheric-free dual-frequency combinations2645 of the L1 and the L2 GNSS observations. The ionospheric-freecombination usually leads to a very small wavelength

$\begin{matrix}{{\lambda_{IF}N_{IF}}:={\frac{{f_{1}^{2}\lambda_{1}N_{1}} - {f_{2}^{2}\lambda_{2}N_{2}}}{f_{1}^{2} - f_{2}^{2}} = {\lambda_{1}\underset{\underset{= {:\lambda_{IF}}}{︸}}{\frac{F_{1}}{F_{1}^{2} - F_{2}^{2}}}\underset{\underset{:=N_{IF}}{︸}}{\left( {{F_{1}N_{1}} - {F_{2}N_{2}}} \right)\mspace{11mu}}\;{with}\mspace{14mu}\begin{matrix}{f_{1} = {:{F_{1}\;\gcd\;\left( {f_{1},f_{2}} \right)}}} \\{f_{2} = {:{F_{s}\;\gcd\;\left( {f_{1},f_{2}} \right)}}}\end{matrix}}}} & (66)\end{matrix}$

The factors F₁ and F₂ are given in Table 3. For example, for GPS L1 andL2 frequencies with F₁=77, F₂=60 and λ₁=0.1903 m the resulting iono-freewavelength is

$\lambda_{IF} = {{\lambda_{1}\frac{F_{1}}{F_{1}^{2} - F_{2}^{2}}} \approx {6\mspace{14mu}{{mm}.}}}$This is below the noise level of the phase observations so that there isno possibility to directly fix the iono-free ambiguity to the correctinteger value. Notice that for the iono-free combination between L2 andL5 the iono-free wavelength is with λ_(IF)≈12.47 cm large enough forreliable ambiguity resolution.

To make use of the integer nature of the L1 and L2 ambiguities one couldtry to solve for the L1 and L2 ambiguities, which is difficult due tothe unknown ionospheric contribution to the L1 and L2 carrier phaseobservations at the stations. A preferred approach is to solve forcarrier-phase ambiguities by fixing the widelane ambiguitiesN_(WL):=N₁−N₂ in a first step. Substituting N₂ in (64) by N₂=N₁−N_(WL)results inλ_(IF) N _(IF)=λ_(NL) N ₁+½(λ_(WL)−λ_(NL))N _(WL)  (67)with

$\lambda_{WL}:={{\frac{c}{f_{1} - f_{2}}\mspace{14mu}{and}\mspace{14mu}\lambda_{NL}}:={\frac{c}{f_{1} + f_{2}}.}}$Thus, once N_(WL) is known, (65) can be solved for N₁ by using the floatvalue from the filter for λ_(IF)N_(IF). After fixing the N₁ ambiguityvector to integer or to a weighted average of integer values it can bereinserted into (65) to get a fixed value for λ_(IF)N_(IF).

In some embodiments the widelane ambiguities N_(WL) are computed in thewidelane bias processor 325 and are transferred to the orbit processor2630 for example every epoch. For embodiments in which the orbitprocessor 2630 processes ionospheric-free observations, the ambiguitiesestimated are ionospheric-free ambiguities λ_(IF)N_(IF).

For embodiments in which the widelane ambiguities N_(WL) are provided bythe MW bias processor 325, equation (65) can also be used to reformulatethe Kalman filter equations (by subtracting ½(λ_(WL)−λ_(NL))N_(WL) fromthe observations) and estimate the N₁ ambiguities directly.

As an alternative to resolving the N₁ ambiguity with a given integerwidelane ambiguity, the equations above can be formulated such that N₂or narrowlane ambiguities are estimated instead; the approaches areequivalent because all these ambiguities are linearly related.

Some embodiments of ambiguity “fixing” mechanism 2695 employ anysuitable techniques known in the art, such as Simple rounding,Bootstrapping, Integer Least Squares based on the Lambda Method, or BestInteger Equivariant (Verhagen, 2005, Teunissen and Verhagen, 2007).

The term “fixing” as used here is intended to include not only fixing ofambiguities to integer values using techniques such as rounding,bootstrapping and Lambda search, but also to include forming a weightedaverage of integer candidates to preserve the integer nature of theambiguities if not fixing them to integer values. The weighted averageapproach is described in detail in international patent applicationsPCT/US2009/004476, PCT/US2009/004472, PCT/US2009/004474,PCT/US2009/004473, and PCT/US2009/004471 which are incorporated hereinby this reference.

Analyses have shown that the orbit quality is significantly improved by“fixing” the ambiguities, either as integer values or as weightedaverages of integer candidates.

Part 8.9 Orbit Processing at IGS Analysis Centers

GNSS orbit determination is done by a variety of IGS Analysis Centers.To our knowledge none of these Centers provides real-time orbitestimation as proposed here.

The CODE Analysis Center (AC) uses a batch least squares approach asdescribed in Dach et al. (2007) and not a sequential filterimplementation as described here. Details on the modeling are alsodescribed in Beutler et al. (1994). The CODE AC participates in thegeneration of the IGS Ultra-rapid orbits (IGU). Orbit positionscorrespond to the estimates for the last 24 hours of a 3-day long-arcanalysis plus predictions for the following 24 hours. This is done every6 hours while the processing and prediction time span is shifted by 6hours in each step.

The Geoforschungszentrum GFZ estimates orbits and computes acontribution to the IGS Ultra-rapid orbits. The approach is documentedby Ge et al. (2005, 2006). Their processing and that of the CODE processis based on a batch least squares approach. GFZ does ambiguityresolution, but only in post-processing mode. No attempt is documentedon real-time efforts involving a sequential filter.

The European Space Operation Centre ESOC of ESA also contributes to theIGS Ultra-rapid orbit computation. The approach is documented by Romeroet al. (2001) and Dow et al. (1999). The approach is also based only ona prediction of satellite orbits. No true real-time processing is done.

The Jet Propulsion Laboratory JPL, USA, determines GPS satellite orbitswith their system based on the GIPSY-OASIS II software package developedfor the US Global Positioning System, general satellite tracking, orbitdetermination and trajectory studies. Details are published in U.S. Pat.No. 5,963,167 of Lichten et al. The JPL system allows a fully automaticoperation and delivery of validated daily solutions for orbits, clocks,station locations and other information with no human intervention. Thisdata contributes to the orbits published by the IGS including theUltra-rapid orbit service providing IGU orbits. U.S. Pat. No. 5,828,336of Yunck et al. describes the implementation of a real-time sequentialfilter.

The approach of embodiments of the present invention differs from thatof U.S. Pat. No. 5,828,336 in at least these ways: (1) the approachdescribed in U.S. Pat. No. 5,828,336 appears to use smoothedpseudo-ranges only; an example observation update rate given is 5minutes, (2) the JPL system described in U.S. Pat. No. 5,828,336 doesnot appear to fix carrier-phase ambiguities, and (3) the approach ofU.S. Pat. No. 5,828,336 uses an ionospheric model.

Part 8.10 References

Some references related to orbit processing include the following:

-   Beutler, G., E. Brockmann, W. Gurtner, U. Hugentobler, L. Mervart,    and M. Rothacher (1994), Extended Orbit Modeling Techniques at the    CODE Processing Center of the International GPS Service for    Geodynamics (IGS): Theory and Initial Results, Manuscripta    Geodaetica, 19, 367-386, April 1994.-   Bierman, Gerald J. (1977): Factorization Methods for Discrete    Sequential Estimation, Academic Press, Inc., New York-   Dach, R., U. Hugentobler, P. Fridez, M. Meindl (eds.) (2007),    Documentation of the Bernese GPS Software Version 5.0, January 2007-   Dow, J., Martin-Mur, T. J., ESA/ESOC Processing Strategy Summary,    IGS Central Bureau web site,    igscb.jpl.nasa.gov/igscb/center/analysis/esa.acn, 1999-   Ge, M., G. Gendt, G. Dick and F. P. Zhang (2005), Improving    carrier-phase ambiguity resolution in global GPS, Journal of    Geodesy, Volume 80, Number 4, July 2006, DOI:    10.1007/s00190-005-0447-0-   Ge, M., G. Gendt, G. Dick, F. P. Zhang and M. Rothacher (2006), A    new data processing strategy for huge GNSS global networks, Journal    of Geodesy, Volume 79, number 1-3, June 2005, DOI:    10.1007/s00190-006-0044-x-   Landau, Herbert (1988): Zur Nutzung des Global Positioning Systems    in Geodäsie und Geodynamik Modellbildung, Software-Entwicklung und    Analyse, Heft 36 der Schriftenreihe des Studiengangs    Vermessungswesen der Universität der Bundeswehr München, Dezember    1988-   Lichten, S., Yoaz Bar-Sever, Winy Bertiger, Michael Heflin, Kenneth    Hurst, Ronald J. Muellerschoen, Sien-Chong Wu, Thomas Yunck, James    Zumberge (1995) GIPSY-OASIS II: A HIGH PRECISION GPS DATA PROCESSING    SYSTEM AND GENERAL SATELLITE ORBIT ANALYSIS TOOL, Proceedings of    NASA Technology Transfer Conference, Oct. 24-26, 1995, Chicago, Ill.

Lichten, Stephen M., Wu Sien-Chong, Hurst Kenneth, Blewitt Geoff, YunckThomas, Bar-Sever Yoaz, Zumberge James, Bertiger William I.,Muellerschoen Ronald J., Thornton Catherine, Heflin Michael (1999),Analyzing system for global positioning system and general satellitetracking, U.S. Pat. No. 5,963,167, Oct. 5, 1999.

-   McCarthy, Dennis D. and Gérard Petit (2003), IERS CONVENTIONS, IERS    (International Earth Rotation Service) Technical Note 32, October    2003-   Romero, I., C. Garcia Martinez, J. M. Dow, R. Zandbergen (2001),    Moving GPS Precise Orbit Determination Towards Real-Time,    Proceedings GNSS 2001, Seville, Spain, May 2001.-   Yunck, Thomas P., William I. Bertiger, Stephen M. Lichten,    Anthony J. Mannucci, Ronald J. Muellerschoen, Sien-Chong Wu, (1998),    Robust real-time wide-area differential GPS navigation, U.S. Pat.    No. 5,828,336, Oct. 27, 1998.-   Teunissen, P. J. G, S. Verhagen (2009); GNSS Carrier Phase Ambiguity    Resolution: Challenges and Open Problems, In M. G. Sideris (ed.);    Observing our Changing Earth, International Association of Geodesy    Symposia 133, Spinger Verlag Berlin-Heidelberg 2009.-   Verhagen, Sandra (2995): The GNSS integer ambiguities: estimation    and validation, Publications on Geodesy 58, Delft, 2005. 194 pages.,    ISBN-13: 978 90 6132 290 0. ISBN-10: 90 6132 290 1.    Part 9: Phase-Leveled Clock Processor

Referring to FIG. 3, the phase clock processor 335 receives as input MWbiases b_(MW) ^(j) 345 (one per satellite) and/or widelane ambiguitiesN_(i,WL) ^(j) 340 (one per satellite-receiver pair), precise orbitinformation 350 (one current orbit position/velocity per satellite),troposphere information 370 (one troposphere zenith delay per station),low-rate code leveled clocks 365 (one low-rate code-leveled clock errorper satellite) and the reference-station GNSS observation data 305 or315. The phase clock processor 335 generates from these inputs thecomputed high-rate code-leveled clocks 375 (one high-rate code-leveledclock error per satellite) and the high-rate phase-leveled clocks 370(one high-rate phase-leveled clock error per satellite), and forwardsthe MW biases 345 (one per satellite).

Part 9.1 Determining WL Ambiguities from MW Biases

Neglecting multipath, a useful characteristic of the Melbourne-Wübbena(MW) linear combination Φ_(i,WL) ^(j)−P_(i,NL) ^(j) is that, aside fromsome remaining noise ε_(i,MW) ^(j), only the satellite MW biases b_(MW)^(j) and the receiver MW biases b_(i,MW) and the widelane ambiguity termλ_(WL)N_(i,WL) ^(j) remain:Φ_(i,WL) ^(j) −P _(i,NL) ^(j) =b _(i,MW) −b _(MW) ^(j)+λ_(WL) N _(i,WL)^(j)+ε_(i,MW) ^(j)  (68)

To get rid of the noise ε_(i,MW) ^(j), the Melbourne-Wübbena linearcombination for each satellite is in some embodiments reduced by thesatellite MW bias b_(MW) ^(j) for that satellite and smoothed (e.g.,averaged) over time. Single-differencing between satellites then cancelsout the receiver MW bias b_(i,MW), leaving only a single-differencedwidelane ambiguity term per satellite-receiver-satellite connection. Thesingle-differenced widelane ambiguities are computed using the(constant) widelane wavelength λ_(WL). Since only single-differencedwidelane ambiguities are used in the phase clock processor, this methodis in some embodiments used as a substitute for using the widelaneambiguities 340 from the MW bias processor 325 and/or for a qualitycheck on the widelane ambiguities 340 received from the MW biasprocessor 325.

Part 9.2 Single-Differenced Phase-Leveled Clocks

The location of each reference station is precisely known. The preciselocation of each satellite at each epoch is given by the current orbitposition/velocity data 350 from orbit processor 330. The geometric rangeρ_(i) ^(j) between a satellite j and a reference station i at each epochis calculated from their known locations. The tropospheric delay T_(i)^(j) for each reference station is received from the code clockprocessor 320.

The ionospheric-free linear combinationΦ_(i,IF) ^(j)=ρ_(i) ^(j) +cΔt _(Φ,i) −cΔt _(Φ) ^(j) +T _(i) ^(j)+λ_(IF)N _(i,IF) ^(j)+ε_(Φ,i,IF) ^(j)  (69)is reduced by the (known) geometric range ρ_(i) ^(j) and the (known)troposphere delay T_(i) ^(j), leaving as unknowns only theionospheric-free ambiguity term λ_(IF)N_(i,IF) ^(j)=λ_(NL)N_(i,1)^(j)+½(λ_(WL)−λ_(NL))N_(i,WL) ^(j), the satellite phase clock error termcΔt_(Φ) ^(j)=cΔt+b_(Φ,IF) ^(j) and the receiver phase clock error termcΔt_(Φ,i):=cΔt+b_(Φ,i,IF).

Single-differencing the observations of two satellites at the samereceiver cancels out the receiver clock error.

Reducing this single difference by the according single differencewidelane ambiguity leads to the single difference phase clock togetherwith a single difference N₁ ambiguity (often also called narrowlaneambiguity in this context since its corresponding wavelength here isλ_(NL)).Φ_(i,IF) ^(j) ¹ ^(j) ² −ρ_(i) ^(j) ¹ ^(j) ² −T _(i) ^(j) ¹ ^(j) ²−½(λ_(WL)−λ_(NL))N _(i,WL) ^(j) ¹ ^(j) ² =−cΔt _(Φ) ^(j) ¹ ^(j) ²+λ_(NL) N _(i1) ^(j) ¹ ^(j) ² +ε_(Φ,i,IF) ^(j) ¹ ^(j) ²   (70)

This is computed for each station observing the same pair of satellites.At this point it is impossible to distinguish between the singledifference satellite clock error and the single difference narrowlaneambiguity term, which is an integer multiple of the narrowlanewavelength.

If the single difference ambiguity is set to zero a single differencephase clockcΔ{tilde over (t)}_(Φ,i) ^(j) ¹ ^(j) ² :=−(Φ_(i,IF) ^(j) ¹ ^(j) ² −ρ_(i)^(j) ¹ ^(j) ² −T _(i) ^(j) ¹ ^(j) ² −½(λ_(WL)−λ_(NL))N _(i,WL) ^(j) ¹^(j) ² )  (71)shifted by an integer number of narrowlane cycles is achieved. Thisphase clock has a non fixed narrowlane status. The difference of two ofthose single difference clocks cΔ{tilde over (t)}_(Φ,i) ₁ ^(j) ¹ ^(j) ²and cΔ{tilde over (t)}_(Φ,i) ₂ ^(j) ¹ ^(j) ² is an integer number ofnarrowlane cycles.

Part 9.3 Smoothed Single-Differenced Phase Clocks

For each pair of satellites, the single-differenced phase clock errorsobserved from different stations shifted to a common level using fixednarrowlane ambiguities is averaged to get a more precise clock error:

$\begin{matrix}{{c\;\Delta\;{\overset{\_}{t}}_{\Phi}^{j_{1}j_{2}}} = {\frac{1}{n}{\sum\limits_{i = 1}^{n}{\left( {{c\;\Delta\;{\overset{\sim}{t}}_{\Phi,i}^{j_{1}j_{2}}} + {\lambda_{NL}N_{i\; 1}^{j_{1}j_{2}}}} \right).}}}} & (72)\end{matrix}$

Part 9.4 Phase-Leveled Clock Estimation

Part 9.4.1 Spanning-Tree-Based Phase Clocks

Some embodiments use a spanning-tree approach to estimate phase-leveledclocks. To compute a single-differenced clock error between anyarbitrary pair of satellites, a set of single difference-phase clocks isneeded for the satellite-to-satellite links such that there is a uniquepath to reach each satellite via satellite-to-satellite links startingfrom a dedicated reference satellite. If all satellites are nodes of agraph, such a path is called spanning tree. If each edge of the graph isequipped with a weight, a minimum spanning tree is a spanning tree witha minimal sum of edge weights. Some embodiments use a discrete categorybased weighting scheme for an edge between two satellites and assign thefollowing phase clock values to the edge:

i. Several edges connecting satellites j₁ and j₂ have a fixed N₁ambiguity: (Weighted) averaged single-differenced clock c Δt_(Φ) ^(j) ¹^(j) ² ,

ii. Only a single edge connecting satellites j₁ and j₂ has a fixed N₁ambiguity: cΔ{tilde over (t)}_(Φ,i) ^(j) ¹ ^(j) ² +λ_(NL)N_(i1) ^(j) ¹^(j) ² ,

iii. No edge connecting satellites j₁ and j₂ has a fixed N₁ ambiguity:cΔ{tilde over (t)}_(Φ,i) ^(j) ¹ ^(j) ² for receiver i withmin(elevation(j1,j2) is maximal,

iv. No WL ambiguity available for edge connecting satellites j₁ and j₂:Don't use such an edge; thus no phase clock has to be defined;

Each edge of category (i) has a lower weight than an edge of category(ii), each edge of category (ii) has a lower weight than an edge ofcategory (iii) etc. Edges within each category have a continuous weightthat is in some embodiments derived in category (i) from the variance ofthe average and in category (ii) and (iii) from the elevations underwhich the satellites in the single difference are seen at thecorresponding station.

If the minimum spanning tree uses an edge without a fixed narrowlanestatus, the narrowlane ambiguity N_(i1) ^(j) ¹ ^(j) ² is set to zero andachieves fixed status. Choosing a reference satellite with phase clockerror cΔt_(Φ) ^(j) ^(ref) set to zero, single-differenced phase clockerrors cΔt_(Φ) ^(j) ^(ref1) ^(j) ² to all other satellites are computedsolving a linear system. The satellite's phase clock error is thendefined as cΔt_(Φ) ^(j) ² :=cΔt_(Φ) ^(j) ^(ref) ^(j) ²

Part 9.4.2 Filter Estimation of Phase-Leveled Clocks

Some embodiments use a filter approach to estimate phase-leveled clocks.A filter is set up with all satellite phase clock errors as states. Thestate of the reference satellite's clock error cΔt_(Φ) ^(j) ^(ref) isset to zero. In some embodiments all links from the spanning tree and inaddition all links with fixed narrowlanes are added to the filter toestimate more precise single-differenced phase clock errors.

Part 9.5 Narrowlane Filter Bank

Once a set of single-differenced phase clock errors is estimated, e.g.,as in Part 9.4, all observations for shifted single-differenced phaseclocks in Part 9.2 are reduced by the clock errors estimated in Part9.4:

$\begin{matrix}{N_{i\; 1}^{j_{1}j_{2}} \approx {\frac{1}{\lambda_{NL}}{\left( {{c\;\Delta\;{\overset{\_}{t}}_{\Phi}^{j_{1}j_{2}}} - {c\;\Delta\;{\overset{\sim}{t}}_{\Phi,i}^{j_{1}j_{2}}}} \right).}}} & (73)\end{matrix}$

What remains is an observable for the integer narrowlane offset. Foreach station a narrowlane filter with a narrowlane ambiguity state persatellite is updated with those observations.

Part 9.6 High-Rate Single-Differenced Code-Leveled Clocks

The phase clock processor 335 also computes high-rate code-leveledclocks.

Part 9.6.1 Buffering Low-Rate Code-Leveled Clocks

GNSS observations (reference station data 305 or 315) for a time (e.g.,an epoch) t₁ are buffered for use when the low-rate information with thesame time tag (t₁) arrives from the code-leveled clock processor 360;this information comprises two of: clock errors 365, tropospheric delays370, and ionospheric-free float ambiguities 374. Thus, GNSS observationsmatched in time with the low-rate clock processor information are alwaysavailable from an observation buffer. When a set of low-rate codeleveled clocks 365 arrive they are combined with the GNSS observationsand with the tropospheric delays 370 and with time-matched satelliteposition/velocity information 350 to compute the carrier ambiguities.

FIG. 24 shows at 2700 the flow of data for the case where the satelliteclocks (clock errors) 365 and the tropospheric delays 370 are used. GNSSobservations arrive over time at the phase clock processor 335 with(e.g. epoch) time tags t₀, t₁, t₂, t₃, etc. Low-rate code leveled clockscΔt_(P) ^(j) and tropospheric delays T arrive asynchronously over timewith time tags t₀, t₁, t₂, t₃, etc. An observation buffer 2705 holds theobservations. These are combined for each time t_(i) in a combiner 2710with satellite position/velocity data, with the low-rate code-leveledclocks cΔt_(P) ^(j) and with the tropospheric delays T to produce theionospheric-free float ambiguity terms λN_(i) ^(j):=λ_(IF)N_(i,IF)^(j)+b_(Φ, i,IF)−b_(P,i,IF)−(b_(Φ,IF) ^(j)−b_(P,IF) ^(j)). A process2715 computes the single-differenced code-leveled clocks 2720.

If the low rate processor sends the float ambiguities, the buffering ofobservations is not needed. The float ambiguities can directly be usedfor future observations.

Part 9.6.2 Computing Iono-Free Float Ambiguities in the Phase ClockProcessor

The data combiner (2710) forms an ionospheric-free linear combination ofthe carrier-phase observation, and reduces this by the geometric rangeρ_(i) ^(j) (computed using the receiver and satellite positions), thetropospheric delay T_(i) ^(j) and the low-rate code-leveled satelliteclock error cΔt_(P) ^(j) (e.g., clocks 365). After this reduction thereceiver clock error and a float ambiguity remains. If this is doneusing between-satellite single-differenced observations, the receiverclock is eliminated and thus only the single-differencedionospheric-free ambiguity term remains:Φ_(i,IF) ^(j) ¹ ^(j) ² (t ₁)−ρ_(i) ^(j) ¹ ^(j) ² (t ₁)−T _(i) ^(j) ¹^(j) ² (t ₁)+cΔt _(P) ^(j) ¹ ^(j) ² (t ₁)=λN _(i) ^(j) ¹ ^(j) ² (t₁)+ε_(Φ,i,IF) ^(j) ¹ ^(j) ² (t ₁).  (74)with cΔt_(P) ^(j) ¹ ^(j) ² :=cΔt^(j) ¹ ^(j) ² +b_(P,IF) ^(j) ¹ ^(j) ²and float ambiguity λN_(i) ^(j) ¹ ^(j) ² :=λ_(IF)N_(i,IF) ^(j) ¹ ^(j) ²−(b_(Φ,IF) ^(j) ¹ ^(j) ² −b_(P,IF) ^(j) ¹ ^(j) ² ) which is a constantvalue and is kept to be used until the next update of low rate clocks.

As an alternative to computing the ionospheric-free ambiguities in thephase clock processor 335, the ionospheric-free float ambiguities areobtained from a previous processor, such as ionospheric-free floatambiguities 374 from the low-rate code clock processor 320.

Part 9.6.3 Using Iono-Free Float Ambiguities to Compute High Rate CodeClocks

Once iono-free ambiguities are known for time t₁, single-differencedionospheric-free linear combinations at any time in the future (e.g. t₂)can be used for each pair of satellites along with tropospheric delayand current geometric range:Φ_(i,IF) ^(j) ¹ ^(j) ² (t ₂)−ρ_(i) ^(j) ¹ ^(j) ² (t ₂)−T _(i) ^(j) ¹^(j) ² (t ₁)−λN _(i) ^(j) ¹ ^(j) ² (t ₁)=−cΔt _(P) ^(j) ¹ ^(j) ² (t₂)+ε_(Φ,i,IF) ^(j) ¹ ^(j) ² (t ₂)+ε_(Φ,i,IF) ^(j) ¹ ^(j) ² (t ₁)  (75)The result of this computation is the single-differenced code-leveledsatellite clock error cΔt_(P) ^(j) ¹ ^(j) ² . With this it is possibleto estimate high-rate single-differenced code-leveled clock errorscΔt_(P) ^(j) ^(ref) ^(j) ² between a given satellite j₂ and a chosenreference satellite j_(ref). If only the between-satellitesingle-differenced clock errors are of interest, the reference satelliteclock error cΔt_(P) ^(j) ^(ref) is set to zero, otherwise the referenceclock can be steered to the corresponding broadcast or low rate clock toshift the clocks to an absolute level. For simplicity FIG. 25A to FIG.25C do not include this shift.

FIG. 25A shows a first embodiment 2800 for preparing the high-ratecode-leveled satellite clocks 375. Precise satellite orbit information,e.g., satellite position/velocity data 350 or 360, and GNSSobservations, e.g., reference station data 305 or 315, are supplied asinputs to a first process 2805 and as inputs to a second process 2810.The first process 2805 estimates a set of ionospheric-free floatambiguities 2815. These are supplied to the second process 2810 whichestimates the high-rate code-leveled satellite clocks (clock errors)375.

FIG. 25B shows a second embodiment 2820 for preparing the high-ratecode-leveled satellite clocks 375. Precise satellite orbit information,e.g., satellite position/velocity data 350 or 360, and GNSSobservations, e.g., reference station data 305 or 315, are supplied asinputs to a low-rate code-leveled clock processor 2825, e.g., code clockprocessor 320, and as inputs to a high-rate code-leveled clock processor2830. The low-rate code-leveled clock processor 2825 preparesionospheric-free float ambiguities 2835, e.g., ionospheric-free floatambiguities 374, and tropospheric delays 2840, e.g., tropospheric delays370. The ionospheric-free float ambiguities 2835 and the troposphericdelays 2840 are supplied to the high-rate code-leveled clock processor2830, e.g., forming a part of phase clock processor 335. The high-ratecode-leveled clock processor 2830 uses the inputs at 2845 to computesingle-differenced high-rate code-leveled satellite clocks 2850 perstation. A filter 2855 uses these to estimate qualitatively improvedcode-leveled satellite clocks (clock errors) 2860, e.g., high-ratecode-leveled satellite clocks 375.

FIG. 25C shows a third embodiment 2865 for preparing the high-ratecode-leveled satellite clocks 375. Precise satellite orbit information,e.g., satellite position/velocity data 350 or 360, and GNSSobservations, e.g., reference station data 305 or 315, are supplied asinputs to a low-rate code-leveled clock processor 2870, e.g., code clockprocessor 320, and as inputs to a high-rate code-leveled clock processor2875. The low-rate code-leveled clock processor 2870 prepares low-ratecode-leveled clocks 2880, e.g., low-rate code-leveled satellite clocks365, and tropospheric delays 2882, e.g., tropospheric delays 370. Thelow-rate code-leveled satellite clocks 2880 and the tropospheric delays2882 are supplied to the high-rate code-leveled clock processor 2875,e.g., forming a part of phase clock processor 335. The high-ratecode-leveled clock processor 2884 uses the inputs at 2884 to computeionospheric-free float ambiguities 2886 which are used at 2888 tocompute single-differenced high-rate code-leveled satellite clocks 2890.A filter 2892 uses these to estimate qualitatively improved high-ratecode-leveled satellite clocks (clock errors) 2894, e.g., high-ratecode-leveled satellite clocks 375.

Part 9.6.4 Clock Shifter

Single-differenced phase-leveled clock errors cΔt_(Φ) ^(j) ^(ref) ^(j) ²and single-differenced code-leveled clock errors cΔt_(P) ^(j) ^(ref)^(j) ² are estimated as in the course of estimating phase-leveledsatellite clocks and high-rate single-differenced code-leveled satelliteclocks. The single-differenced high-rate code-leveled satellite clockshave the same accuracy as single differences of the low-ratecode-leveled satellite clocks. The phase-leveled satellite clocks areconstructed to preserve the integer nature of the narrowlane ambiguityif used for single-differenced ionospheric-free carrier-phaseobservations together with the precise satellite orbits and the widelaneambiguities, derived from the MW biases, used in the clock estimation.Thus the quality of a single-differenced phase-leveled clock error isnot changed if this clock error is shifted by an integer number ofnarrowlane cycles. Since the phase-leveled satellite clock errors willalways be used in a single difference, such a shift which is applied toall satellite clock errors will cancel out again in thesingle-differencing operation. In accordance with some embodiments thefollowing shift is applied to the phase-leveled satellite clock errorsto keep their values close to the low-rate code-leveled satellite clockerrors and reduce their noise.

Thus in some embodiments an integer number of narrowlane cycless _(NL) ^(j) ^(ref) ^(j) ² =Round(cΔt _(P) ^(j) ^(ref) ^(j) ² −cΔtΦ ^(j)^(ref) ^(j) ² )  (76)is added to each of the phase-leveled satellite clock errors to minimizethe distance to the high-rate code-leveled satellite clocks.

In some embodiments the low-rate code-leveled clock errors areapproximated with a continuous steered clock cΔt_(P,steered) ^(j). Thevalue of the steered clock of the reference satellites _(ref) =cΔt _(P,steered) ^(j) ^(ref)   (77)is then added to all high-rate clocks. Doing so, all clocks are close tothe code-leveled low-rate clocks, but the reference clock is smooth.

In some embodiments the mean of the difference between the high-ratephase-leveled satellite clocks and their corresponding steered low-rateclock is computed and added to all shifted phase-leveled satellite clockerrors. The same is done for the high-rate code-leveled satelliteclocks. This procedure pushes some noise into the reference clock. Ifthe number of clocks used to compute this mean changes, the computedmean can be discontinuous. To handle those jumps one can simply send ajump message or smooth the mean, e.g., by steering to the current valueor using a moving average, etc.

$\begin{matrix}{{s_{P,{noise}} = {\frac{1}{n}{\sum\limits_{j = 1}^{n}\left( {{c\;\Delta\; t_{P}^{j_{ref}j_{2}}} - {c\;\Delta\; t_{P,{steered}}^{j_{ref}j_{2}}}} \right)}}}{S_{\Phi,{noise}} = {\frac{1}{n}{\sum\limits_{j = 1}^{n}\left( {{c\;\Delta\; t_{\Phi}^{j_{ref}j_{2}}} - {c\;\Delta\; t_{P,{steered}}^{j_{ref}j_{2}}} + s_{NL}^{j_{ref}j_{2}}} \right)}}}} & (78)\end{matrix}$

The shifted clock errors read ascΔt _(P) ^(j) ² =cΔt _(P) ^(j) ^(ref) ^(j) ² +s _(P,noise) +s _(ref)cΔt _(Φ) ^(j) ² =cΔt _(Φ) ^(j) ^(ref) ^(j) ² +s _(Φ,noise) +s _(ref) +s_(NL) ^(j) ^(ref) ^(j) ²   (79)

The shifting is mainly done to keep the phase-leveled satellite clockerrors near GPS time and therefore make certain transmission methodsapplicable. In addition the clock biasb _(Δt) ^(j) =cΔt _(P) ^(j) −cΔt _(Φ) ^(j),  (80)which is the difference between the phase-leveled satellite clocks andcode-leveled satellite clocks, can be kept within a certain range.

Part 9.6.5 Jump Messages

If the clock bias leaves its range or if the phase-leveled clocks'satellite-to-satellite links have been estimated without using fixednarrowlane ambiguities, the shift will change and a jump message issent. This also means that the phase-leveled satellite clock errorchanges its level.

Part 9.7 Phase Clock Processor Embodiments

FIG. 26 shows an architecture 2900 of a phase clock processor 335 inaccordance with some embodiments of the invention. The inputs to thephase clock processor are: MW biases and/or fixed WL ambiguities 2095(e.g., MW biases 345 and/or fixed WL ambiguities 340), low-rate (LR)code-leveled clocks 2910 (one per satellite, e.g., low-rate code-leveledsatellite clocks 365), satellite orbit information (e.g., precisesatellite orbit position/velocities 350 and/or IGU orbit data 360),tropospheric delays 2920 (one per reference station, e.g., troposphericdelays 370), and GNSS observations 2925 (of multiple satellites atmultiple reference stations, e.g, reference station data 305). Thechoice of MW biases or fixed WL ambiguities gives two options. A firstoption is to use the low-rate MW biases together with the low-rate orbitinformation 2915 and the GNSS observations 2925 in an optional fixerbank 2930 to fix the WL ambiguities. These are then provided at a highrate (HR) as single-differenced fixed WL ambiguities 2935 to acomputation process 2940. A second option is use the low-rate fixed WLambiguities directly to supply single-differenced (SD) fixed WLambiguities to the process 2940. By high-rate is meant that thesingle-differenced fixed WL ambiguities used in the high-rate process2940 remain the same from epoch to epoch in process 2940 betweenlow-rate updates.

The low-rate code-leveled clocks 2910 are used in process 2945 tocompute low-rate single-differenced ionospheric-free float ambiguities2950. These are used with the low-rate orbit data 2915 and the low-ratetropospheric delays 2920 and the high-rate GNSS observations 2925 in aprocess 2955 to compute single-differenced high-rate code-leveled clocks2960 (one per satellite, such as high-rate code-leveled satellite clocks375).

The high-rate single-differenced fixed WL ambiguities 2935 are used withthe low-rate orbit data 2915 and the low-rate tropospheric delays 2920and the GNSS observations 2925 in a process 2940 which computeshigh-rate phase-leveled clocks 2945 (one per satellite, such ashigh-rate phase-leveled satellite clocks 375). The high-ratephase-leveled clocks 2945 are used together with the orbit data 2915 andthe tropospheric delays 2920 and the GNSS observations 2925 in anambiguity fixer bank 2975 which attempts to fix single-differencedambiguities, e.g., L1 ambiguities. The single-differenced fixedambiguities 2980 are pushed into the process 2965 to aid the computationof high-rate phase-leveled clocks 2970.

The MW biases and/or fixed WL ambiguities 2905 and the low-ratecode-leveled clocks 2910 and the single-differenced high-ratecode-leveled clocks 2960 and high-rate phase-leveled clocks 2970 are fedinto a process 2985 which shifts and combines these to deliver a highrate data flow 2990 containing (at least) high-rate phase-leveledsatellite clocks, high-rate code-leveled clocks and high-rate MW biases.Data 2990 is supplied to scheduler 355 as described in FIG. 3.

FIG. 27A shows an embodiment 3000 of a process for estimating high-ratephase-leveled satellite clocks. Precise satellite orbit information,e.g., satellite position/velocity data 350 or 360, and GNSSobservations, e.g., reference station data 305 or 315, are supplied atlow rate as inputs to a first process 3015 and at high rate as inputs toa second process 3020. The first process 3015 estimates ambiguities3025, one set of ambiguities per receiver. Each ambiguity corresponds toone of a receiver-satellite link and a satellite-receiver-satellitelink. These ambiguities are supplied at low rate to the second process3020 which estimates the high-rate phase-leveled clocks 3030.

In general a linear combination of carrier phase observations hasreceiver-dependent parameters p_(r) like receiver position, receiverclock error or receiver biases, satellite-dependent parameters p^(s)like the satellite position, and receiver-satellite-link dependentparameters p_(r) ^(s) like the tropospheric or the ionospheric delay.Let Ω_(rk) ^(s), kεL be linear combinations of code and carrier phaseobservations with wavelength λ_(k) and ambiguity N_(rk) ^(s). A code andcarrier phase combination as assumed here can be written as

$\begin{matrix}{{{\hat{\Omega}}_{r}^{s}:={{\sum\limits_{k \in \hat{L}}{a_{k}\Omega_{rk}^{s}}} = {{f\left( {p_{r},p^{s},p_{r}^{s}} \right)} + {c\;\Delta\; t^{s}} + {\sum\limits_{k \in \hat{L}}{a_{k}\left( {b_{k}^{s} + {\lambda_{k}N_{rk}^{s}}} \right)}} + ɛ_{r}^{s}}}},} & (81)\end{matrix}$with {circumflex over (L)}⊂L, {circumflex over (L)} not empty and realfactors a_(k)ε

.

Note that f:

^(n) ^(p) →

is linear in most of the parameters. If a mapping exists to convertbetween a receiver-satellite link dependent parameter and a receiverdependent parameter, it can be used to reduce the number of unknowns. Asan example the troposphere delay can be modeled as a delay at zenith,which is mapped to line of sight. Thus instead of having one parameterper receiver-satellite link, only one parameter per receiver is needed.

Using special linear combinations such as an ionospheric-freecombination, parameters can be canceled out. Each additional input of atleast one of the parameters contained in p_(r), p^(s) and p_(r) ^(s)simplifies and accelerates the estimation process. Insatellite-receiver-satellite single differences the parameters p_(r)cancel out. In the following all can be done in single or zerodifference, but this will not be mentioned explicitly in each step.

If all parameters p_(r), p^(s), p_(r) ^(s) and cΔt^(s) are known and thenoise is neglected, the remaining part

$\sum\limits_{k \in \hat{L}}{a_{k}\left( {b_{k}^{s} + {\lambda_{k}N_{rk}^{s}}} \right)}$is not unique without additional information. Setting the ambiguitiesfor a specific satellite-receiver combination to zero will shift thebiases accordingly. If the ambiguities are known, the level of the biasis defined; if the bias is known, the level of ambiguities is defined.

In some linear combinations Ω_(rk) ^(s) of code and carrier-phaseobservations the parameter p_(r), p^(s), p_(r) ^(s) and cΔt^(s) cancelout, as do the receiver biases b_(rk). This allows estimating the biasesb_(k) ^(s), b_(rk) and the ambiguities N_(rk) ^(s) separated from theother parameter.

Not all satellite biases can be estimated separately from the satelliteclock error cΔt^(s). In this case the sum of the real satellite clockand the biases are estimated together and the result is just referred asthe satellite clock error. In this case shifting a bias is equivalentwith shifting a clock.

In the following a distinction is made between ambiguities belonging tobiases and ambiguities belonging to clock errors. The clock ensemble andalso the biases ensemble estimated from GNSS observations areunderdetermined. Thus one of the satellite or receiver clockerrors/biases or any combination of them can be set to any arbitraryvalue or function to make the system solvable. In some embodiments oneof the clocks/biases is set to zero, or additional measurements orconstraints for one of the clock errors/biases or a linear combinationof clock errors/biases are added. The examples given here always have areference clock/bias set to zero, for purposes of illustration, but thisis not a requirement and another approach can be used.

Process I (3015):

In a first step all other input parameters are used to reduce the linearcombination of carrier phase observations. Depending on the linearcombination used, there are small differences in how to estimatephase-leveled satellite clock errors. One option is to use a single, bigfilter: In this case, all remaining unknown parameters of p_(r), p^(s)and p_(r) ^(s), the satellite clock errors, including biases, and allambiguities of {circumflex over (Ω)}_(r) ^(s), are modeled as states inone filter, e.g. a Kalman filter. As an example the filter used fororbit determination in Part 8 (Orbit Processor), the one used forcode-leveled clocks in Part 6 (Code-Leveled Clock Processor) (except theinteger nature of ambiguities) or the Melbourne-Wübbena bias processorin Part 7 (MW Bias Processor) can be used. Another option is to performa hierarchical estimation.

In some embodiments using linear combinations Ω_(rk) ^(s) of code andcarrier-phase observations in which the parameters p_(r), p^(s), p_(r)^(s) and cΔt^(s) cancel out, the biases and ambiguities of Ω_(rk) ^(s)estimated in an auxiliary filter and can be used to simplify the mainfilter.

Another option is to use a bank of filters rather than a single filteror rather than a main filter with auxiliary filter. If all parameterbeside the ambiguities are known, in at least one of the code andcarrier-phase combinations {circumflex over (Ω)}_(r) ^(s) or Ω_(rk)^(s), kε{circumflex over (L)} the ambiguities can be estimated in afilter bank with one filter for each ambiguity or one filter for eachreceiver. This is done for single-differenced observations in the phaseclock processor to estimate the widelane ambiguities using theMelbourne-Wübbena linear combination and Melbourne-Wübbena biases asinput.

A further option is to use a combination of a main filter with a bank offilters. In some embodiments the results of the filter banks are used toreduce the carrier-phase combinations {circumflex over (Φ)}_(r) ^(s)inthe main filter used to estimate the remaining unknowns.

At least one set of fixed ambiguities is sent from process I (3015) toprocess II (3020), but all the estimated parameters could be sent inaddition.

Process II (3025):

In process II the linear combination {circumflex over (Ω)}_(r) ^(s) isreduced by all input parameters from process I or additional sources. Ifno fixed ambiguities are available for the ambiguities from process Ithat belong to the clock error, a subset of those ambiguities definede.g. by a spanning tree is in some embodiments set to any arbitraryinteger number and used like fixed ambiguities as discussed above. Ifthis subset changes or is replaced by fixed ambiguities of process I,the resulting satellite phase clock errors may change their level. Allremaining unknowns are modeled as states in a filter, e.g. a Kalmanfilter.

As in FIG. 27A, some embodiments estimate the ambiguities at a firstrate and estimate a phase-leveled clock per satellite at a second ratehigher than the first rate. The ambiguities estimated in process I(3005) are constant as long the receiver has no cycle slip. Thus anestimated ambiguity can be used for a long time. Also some of the otherstates like the troposphere estimated in process I (3005) vary slowlyand can be assumed to be constant for a while. If the observations ofprocess II (3020) are reduced by those constant and slowly varyingparameters, the filter used to estimate clock errors has only a viewunknowns left and is therefore quite fast. In general, processor II canwork at a higher update rate than process I.

FIG. 28 shows an embodiment 3100 in which estimating a phase-leveledclocks per satellite comprises using at least the satellite orbitinformation, the ambiguities and the GNSS signal data to estimate a setof phase-leveled clocks per receiver, each phase-leveled clockcorresponding to one of a receiver-satellite link and asatellite-receiver-satellite link; and using a plurality of thephase-leveled clocks to estimate one phase-leveled clock per satellite.The satellite orbit information 3105 (e.g, 350 or 360) and the GNSSobservations 3110 (e.g., 305 or 315) are used in a first process 3115 todetermine the ambiguities 3120. The ambiguities 3120 are used with thesatellite orbit information 3105 and the GNSS observations 3110 in asecond process 3125 to estimate the set of phase leveled clocks 3130,each phase-leveled clock corresponding to one of a receiver-satellitelink and a satellite-receiver-satellite link. These are used in a thirdprocess 3135 to estimate satellite clocks 3140, one per satellite.

This means, instead of having a big filter in the second process, theproblem can be decoupled using a small filter for eachsatellite-to-satellite link to estimate clock errors perreceiver-satellite link or in single difference case persatellite-receiver-satellite link. Afterwards those clock errors perlink can be combined either using only links defined by a spanning tree(e.g., as at 3058) or using a filter with one clock error state persatellite.

In some embodiments, the ambiguities are estimated using at least onepreviously-estimated phase-leveled clock per satellite. As mentionedabove, the known fixed ambiguities define the clock error level, and(vice versa) a known clock error leads to ambiguities fitting this clockerror. Thus the feedback of clock error estimates to process I allows toestimate ambiguities without having a dedicated clock error state. Sinceprocess II can already produce clock error estimates before having allambiguities fixed, this feedback is advantageous in such a scenario tofix ambiguities belonging to clock errors. FIG. 29 shows one suchembodiment 3200. The satellite orbit information 3205 (e.g., 350 or 360)and the GNSS observations 3210 (e.g., 305 or 315) are used in a firstprocess 3215 to determine the ambiguities 3220. The ambiguities 3220 areused with the satellite orbit information 3205 and the GNSS observations3210 in a second process 3225 to estimate the set of phase leveledclocks 3230. These are fed back to the first process 3215 where they areused in estimating the ambiguities 3220.

Two more detailed realizations of this process are illustrated in FIG.27B and FIG. 27C.

FIG. 27B is a simplified schematic diagram of an alternate phase clockprocessor embodiment 3035 with WL ambiguities input as in option 2 ofFIG. 26 (compare with process 2965). Satellite orbit data 3005 (e.g.,350 or 360), GNSS observations 3010 (e.g., 305 or 315), troposphericdelays 3040 (e.g., 370) and fixed WL ambiguities 3045 (e.g., 340) aresupplied to a filter bank 3050 of process I (3015). Filter bank 3050estimates single-differenced free narrowlane ambiguities 3055. The SDfree NL ambiguities 3055 and the fixed WL ambiguities 3045 are combinedin a process 3060 with the satellite orbit data 3005, the GNSSobservations 3010, and the tropospheric delays 3040 to computesingle-differenced satellite clocks 3062. These are applied to anarrowlane filter bank 3064 to estimate single-differenced-satelliteclocks 3066. A spanning tree process 3068 (e.g. MST) is applied to theseto produce a set of single-differenced satellite clocks 3070. These arefed back to the filter bank 3050 of process I (3015) to improve theestimation of the single-differenced free narrowlane ambiguities 3055.

FIG. 27C is a simplified schematic diagram of an alternate phase clockprocessor embodiment 3075 with MW biases input as in option 1 of FIG. 26(compare with process 2965). Satellite orbit data 3005 (e.g., 350 or360), GNSS observations 3010 (e.g., 305 or 315), tropospheric delays3040 (e.g., 370) and fixed WL ambiguities 3045 (e.g., 340) are suppliedto a filter bank 3078 of process I (3015). Filter bank 3078 estimatessingle-differenced free narrowlane ambiguities 3088. A filter bank 3082uses the MW satellite biases 3045 to estimate WL ambiguities 3084. As inFIG. 27B, the SD free NL ambiguities 3055 and the fixed WL ambiguities3084 are combined in a process 3060 with the satellite orbit data 3005,the GNSS observations 3010, and the tropospheric delays 3040 to computesingle-differenced satellite clocks 3062. These are applied to anarrowlane filter bank 3064 to estimate single-differenced-satelliteclocks 3066. A spanning tree process 3068 (e.g. MST) is applied to theseto produce a set of single-differenced satellite clocks 3070. These arefed back to the filter bank 3078 of process I (3015) to improve theestimation of the single-differenced free narrowlane ambiguities 3080.

Using clock error estimates from a second phase clock processor as inputto process I allows to estimate ambiguities fitting those clocks andfinally to estimate satellite clock errors at the same level as theother processor's clock errors. For this embodiment it is advantageousto have a secondary clock processor as a back up which is available toimmediately provide clock error estimates without level change in caseof a failure of the primary clock processor.

In some embodiments at least one additional phase-leveled clock persatellite estimated from an external source is obtained and used toestimate the ambiguities. FIG. 30 shows one such embodiment 3300. Inpart 3335, the satellite orbit information 3305 (e.g., 350 or 360) andthe GNSS observations 3310 (e.g., 305 or 315) are used in a firstprocess 3315 to determine the ambiguities 3320. The ambiguities 3320 areused with the satellite orbit information 3305 and the GNSS observations3310 in a second process 3325 to estimate the set of phase leveledclocks 3330. In part 3385, the satellite orbit information 3355 (e.g,350 or 360) and the GNSS observations 3360 (e.g., 305 or 315) are usedwith one or more of satellite clocks 3330 in a first process 3365 toestimate the ambiguities 3370. In this embodiment part 3335 is anexternal source of the satellite clocks 3330 with respect to part 3385.The ambiguities 3370 are used with the satellite orbit information 3355and the GNSS observations 3360 in a second process 3375 to estimate theset of phase leveled clocks 3380.

In some embodiments, at least one set of ambiguities per receiver isdetermined for additional receivers, each ambiguity corresponding to oneof a receiver-satellite link and a satellite-receiver-satellite link.After determining the ambiguities for the additional receivers, at leastthe precise orbit information, the ambiguities for the additionalreceivers and the GNSS signal data are used to estimate the at least oneadditional phase-leveled clock per satellite.

FIG. 31 shows one such embodiment 3400. In part 3455, the satelliteorbit information 3405 (e.g, 350 or 360) and the GNSS observations 3310(e.g., 305 or 315) are used in a first process 3415 to determine theambiguities 3420. The ambiguities 3420 are used with the satellite orbitinformation 3405 and the GNSS observations 3410 in a second process 3425to estimate the set of phase leveled clocks 3430. In part 3485, thesatellite orbit information 3455 (e.g, 350 or 360, but optionally from adifferent orbit processor associated with a different network ofreference stations) and the GNSS observations 3410 (e.g., 305 or 315,but optionally from a different network of reference stations) are usedwith one or more of satellite clocks 3430 in a first process 3465 toestimate the ambiguities 3470. The ambiguities 3470 are used with thesatellite orbit information 3455 and the GNSS observations 3460 in asecond process 3475 to estimate the set of phase leveled clocks 3480.

The primary and secondary clock processors can also be of differentkind. This option can be used to estimate the ambiguities close to thelevel of clock errors based on a different linear combination (e.g. codeclock error or different phase combination). Using those ambiguities inprocess II will lead to clock errors close to clock errors input inprocess I.

Part 10: Scheduler & Message Encoder

The scheduler 355 and message encoder 385 can be implemented as desired.Methods and apparatus for encoding and transmitting satelliteinformation are described for example in Patent Application PublicationsUS 2009/0179792 A1, US2009/0179793 A1, US2010/0085248 A1, US2010/0085249A1 and/or US2010/0214166 A1.

Part 11: Rover Processing with Synthesized Reference Station Data

Part 11.1 Introduction

Existing RTK rover positioning engines are typically designed to processdifferenced data; the rover data is differenced with base station dataand the filters operate on the differenced data. The GNSS observationsare contaminated with a number of errors such as satellite clock error,receiver clock error, troposphere delay error, and ionospheric delayerror. The satellite-dependent errors (e.g. satellite clock error) canbe eliminated if the difference between the observations of tworeceivers observing the same satellite is used. If those receivers arelocated close enough to each other (e.g. a few kilometers under normalconditions) then the atmosphere-related errors can also be eliminated.In case of VRS (Virtual Reference Station) the difference is done notbetween two stations, but between the rover station and a virtualstation, whose data is generated using observations from a network ofreceivers. From this network it is possible to create knowledge of howerrors behave over the region of the network, allowing differentialpositioning over longer distances.

Prior approaches for Precise Point Positioning (PPP) and PPP withambiguity resolution (PPP/RTK) remove modeled errors by applying them ascorrections (subtracting the errors) to the rover data. Though thisworks, using a rover receiver configured to process differenced datarequires a change in data preparation in that single-differencing has tobe replaced by rover-data-only error correction before the data can beprocessed.

This implies two different modes of operation inside the rover'spositioning engine. In practice this results in separate processors forPPP and RTK. This consumes a lot of software development resource, andoccupies more of the rover's CPU memory for the additional modules anddata.

Part 11.2 Global Virtual Reference Station Positioning

Some embodiments of the invention are based on a substantially differentapproach, in which a Synthesized Base Station (SBS) data stream isgenerated for any position on or near the Earth's surface using precisesatellite information (e.g., precise orbits and clocks). This datastream is equivalent to having a real reference station near the rover.

For processing at the rover, a Real-Time Kinematic (RTK) positioningengine is used that is adapted to the different error characteristics ofPPP as compared to traditional Virtual Reference Station (VRS)processing. Unlike traditional VRS processing, some embodiments of theinvention use a processing approach which does not rely on smallionospheric residuals. And in contrast with traditional VRS processing,some embodiments of the invention optionally process differentpseudorange observables.

PPP and PPP/RTK functionality are retained, with comparatively lowsoftware development and few changes in the rover positioning engine,while retaining the advantage of well-proven RTK engines that had beendeveloped and perfected with many man-years of development time.Examples of such functionality include processing of data collectedunder canopy and dealing with delays in the reference data/corrections(low-latency positioning).

PPP-RTK studies using the SBS technique have proven the high performanceof such a system. A positioning accuracy of 10 cm horizontal (95%) wasachieved after about 600 seconds (mean) when processing a test data set.Convergence to the typical long baseline and VRS survey accuracy of 2.54cm horizontal (95%) was achieved after 900 seconds (mean). This suggeststhat SBS techniques described here can provide sub-inchhorizontal-positioning performance.

Part 11.3 Generating SBS Data

The SBS technique enables the generation of virtual GNSS data (data froma virtual GNSS reference/base station) for any position on or near theEarth's surface using precise satellite information (e.g., orbits,clocks). The core of the processing is done inside a module whichresponsible for the generation of the virtual data. The aim of such datageneration is to make it possible to use GNSS satellite preciseinformation in a GNSS receiver running a conventional real-timekinematic (RTK) process as is typically used with reference receiverdata of a physical base station or virtual reference station. In the SBStechnique the receiver's antenna position is computed by the RTK enginewith differential GNSS data processing (i.e., difference betweenobservations of a reference receiver and a rover receiver) using the SBSdata as coming from the (virtual) reference receiver, and the roverreceiver data. The technique therefore allows that a differential GNSSprocessor is used to compute positions anywhere without the explicitneed of a nearby reference station.

The SBS module uses at least one of the following:

Phase-leveled clocks: These are the satellite clock offsets computed asdescribed in Part 9 (Phase-Leveled Clock Processor).

Code-leveled clocks: These are the satellites clock offsets computed asdescribed in Part 6 (Code-Leveled Clock Processor).

Melbourne-Wübbena bias: These are the satellite biases for theMelbourne-Wübbena phase and code combination computed as described inPart 7 (MW Bias Processor).

Jump messages: These messages can indicate whether or not the satellitephase clock had a change of level in the recent past (e.g. 10 minutes).The reasons for a level change are pointed out in Part 9 (Phase-LeveledClock Processor). Whenever a jump (level change) occurs in the satellitephase clock offset, some action has to be taken on the rover. Thisaction might be the reset of the satellite's ambiguity/ambiguities inthe RTK engine.

Approximate rover position: This is the position for which the virtualbase data will be generated. The approximate position of the rover canbe used for example so that geometric-dependent components (e.g.satellite position) are the same as for the rover data.

Time tag: This is the time (epoch) for which the virtual data isgenerated. The virtual data is created for certain instants of time(epochs) that depend on the rover observation time tags, so that it canbe used in the differential data processing together with the roverdata.

Given one or more items of the list above as input, the SBS modulegenerates as output a set of GNSS virtual observations. Theseobservations may comprise and are not restricted to: L1 code, L2 code,L1 phase, L2 phase, L1 cycle slip information, L2 cycle slipinformation, and/or exact virtual base position. Once the virtualreference station dataset is available it can be delivered to the RTKengine for differential processing with the rover's own GNSS observationdata and optionally using the precise satellite data. The RTK engine canthen apply conventional RTK processing to compute the rover coordinates.

Part 11.4 Moving Base

The best corrections for kinematic rovers are obtained when the SBSposition and the synthesized reference station data for the SBS positionare updated frequently, e.g., for every epoch of rover observations anew set of SBS data is generated. Some embodiments use as the SBSposition a first estimate of the rover position, derived for examplefrom a simple navigation solution using the rover observations.

In the case of prior-art Virtual Reference Station (VRS) processing, amoving rover can result in a significant separation between the roverposition and the VRS location for which the VRS data is synthesized.Some implementations mitigate this by changing the VRS position whenthis distance exceeds a certain threshold. This can lead to resets ofthe RTK engine in most implementations.

For attitude determination (heading, blade control etc.), typical RTKprocessing engines are usually capable of processing data from a movingbase station; frequent updating of the SBS position and the synthesizedreference station data for the SBS position do not require modificationof these rover processing engines.

Part 11.5 SBS Embodiments

FIG. 34 shows an embodiment 3800 of SBS processing in accordance withthe invention. Rover receiver 3805 receives GNSS signals from multipleGNSS satellites, of which three are shown at 3810, 3815 and 3820.Receiver 3805 derives GNSS data 3825 from code observations andcarrier-phase observations of the GNSS signal over multiple epochs.

Precise satellite data 3830 for the GNSS satellites are received, suchas via a correction message 390 broadcast by a communications satellite3835 or by other means, and decoded by a message decoder 3832. A SBSmodule 3835 receives the precise satellite data 3830 and also receivesinformation which it can use as a virtual base location, such as anapproximate rover position with time tag 3842 generated by an optionalnavigation processor 3845. The approximate rover position is optionallyobtained from other sources as described below.

SBS module 3835 uses the precise satellite data 3830 and the approximaterover position with time tag 3842 to synthesize base station data 3850for the virtual base location. The base station data 3850 comprises, forexample, synthesized observations of L1 code, L2 code, L1 carrier-phaseand L2 carrier-phase, and optionally includes information on L1 cycleslip, L2 cycle slip, and the virtual base location. The SBSD module 3835is triggered by an event or arrival of information which indicates thata new epoch of synthesized base station data is to be generated. In someembodiments the trigger is the availability of a rover observation epochdata set. In some embodiments the trigger is the current rover time tag,In some embodiments one epoch of synthesized base station data 3850 isgenerated for each epoch of GNSS data observations 3825. In someembodiments the trigger is the availability of an updated set of precisesatellite data 3830.

In some embodiments a differential processor 3855, such as a typical RTKpositioning engine of an integrated GNSS receiver system 3700, receivesthe precise satellite data 3830, the synthesized base station data 3850,and the GNSS data 3825 of rover receiver 3805, and uses these todetermine a precise rover position 3860. Synthesized base station data3850 is substituted for base station data in such processing.

FIG. 35 shows clock prediction between an observation time Obs 0 and asubsequent observation time OBs 1.

FIG. 36 is a schematic block diagram of the SBS module 3835.

The SBS module 3835 uses at least one of the following:

Phase-leveled clocks 370: These are the satellite clock offsets computedas described in Part 9: Phase Clock Processor.

Code-leveled clocks 365: These are the satellite clock offsets computedas described in Part 6: Standard Clock Processor;

Melbourne-Wübbena biases 345: These are the satellite biases for theMelbourne-Wübbena phase and code combination computed as described inPart 8: Widelane Bias Processor;

Jump messages (e.g., from correction message 390): Jump messagesindicate when the satellite phase clock has had a change of level in therecent past (e.g. 10 minutes). The reasons for a level change arepointed out in Part 9: Phase Clock Processor. When a jump (level change)in the satellite phase clock offset is indicated, action is taken at therover such as reset of the satellite's ambiguity(ies) in the RTK engine.

Approximate rover position 3840: This is the position for which thevirtual base data will be generated. The approximate position of therover can be used so geometric-dependent components (e.g. satelliteposition) are the same as for the rover data.

Time tag 3842: This is the time for which the virtual data is to begenerated. The synthesized base station data 3850 is created for certaininstants of time that depend on the rover observation time tags, so thatit can be used in the differential data processing together with therover data.

Given one or more of these items as input the SBS module 3850 generatesas output 3850 a set of GNSS virtual observations. These observationscomprise and are not restricted to: L1 code, L2 code, L1 phase, L2phase, L1 cycle slip information, L2 cycle slip information, and exactvirtual base position. The virtual base station is delivered to thedifferential processor 3855 as is the rover's GNSS data 3825 and,optionally, the precise satellite data 3830. The differential processor3855 computes the coordinates of the precise rover position 3860, e.g.,using a conventional RTK receiver processing approach (see, for example,P. Misra et al., Global Positioning System: Signals, Measurements, andPerformance, 2d Edition (2006), pp. 239-241, and U.S. Pat. No. 5,610,614issued 11 Mar. 1997 to Talbot et al.).

At any instant the SBS module 3835 may receive one or more of thefollowing: approximate rover position 3840, precise satellite data 3830,and/or a time tag 3842. The approximate rover position 3840 is stored at4005 as an updated current virtual base position. The precise satellitedata 3840 is saved at 4010. The time tag 3842 is saved at 4015. Any ofthese items, or an optional external trigger 4020, can be used as atrigger event at decision point 4025 begin the generation of a new setof synthesized base station data 3850.

The satellite data for the current time tag is evaluated at 4030. Thismeans that the satellite position and clock error that are stored areconverted to the correct transmission time of the signal, so they can beconsistently used with the rover observations. This is done because thestored satellite position and clock errors do not necessarily match thetime tag of each requested epoch of the SBS module. The precisesatellite data set for the current time tag 4035 is used at 4040 tosynthesize a base station data set for the current time tag. At 4040,the satellite position and satellite velocity are computed for thecurrent time tag. The geometric range between the virtual base station iand the satellite j is computed for example as:ρ_(i) ^(j)=√{square root over (((X ^(j) −X _(i))²+(Y ^(j) −Y _(i))²+(Z^(j) −Z _(i))²))}{square root over (((X ^(j) −X _(i))²+(Y ^(j) −Y_(i))²+(Z ^(j) −Z _(i))²))}{square root over (((X ^(j) −X _(i))²+(Y ^(j)−Y _(i))²+(Z ^(j) −Z _(i))²))}  (82)

-   where X^(j), Y^(j), Z^(j) is the satellite position at the time of    the current time tag, and X_(i), Y_(i), Z_(i), is the virtual base    station location at the time of the current time tag.

The neutral atmosphere (or, troposphere) delay T_(i) ^(j) is computedfor example using a prediction model. E For examples of predictionmodels see [Leandro 2009], [Leandro et al. 2006a], or [Leandro et al.2006b].

The ionospheric delay I_(i) ^(j) for L1 frequency is computed forexample using an ionosphere model. This can be a prediction model, suchas the GPS broadcast ionosphere model [ICD-GPS], or something moresophisticated. Optionally the ionospheric delay can be set to zero.

The uncorrected synthesized base station data set for the time of thetime tag is then computed for example as:

$\begin{matrix}{\Phi_{i,1}^{j\;\prime} = {\rho_{i}^{j} - {c\;\Delta\; t_{\Phi}^{j}} + T_{i}^{j} - I_{i}^{j}}} & (83) \\{\Phi_{i,2}^{j\;\prime} = {\rho_{i}^{j} - {c\;\Delta\; t_{\Phi}^{j}} + T_{i}^{j} - {\frac{f_{1}^{2}}{f_{2}^{2}}I_{i}^{j}}}} & (84) \\{P_{i,1}^{j\;\prime} = {\rho_{i}^{j} - {c\;\Delta\; t_{P}^{j}} + T_{i}^{j} + I_{i}^{j} + {\frac{f_{2}}{f_{1}}\left( {{\lambda_{WL} \cdot b_{MW}^{j}} - {c\;\Delta\; t_{\Phi}^{j}} + {c\;\Delta\; t_{P}^{j}}} \right)}}} & (85) \\{P_{i,2}^{j\;\prime} = {\rho_{i}^{j} - {c\;\Delta\; t_{P}^{j}} + T_{i}^{j} + {\frac{f_{1}^{2}}{f_{2}^{2}}I_{i}^{j}} + {\frac{f_{1}}{f_{2}}\left( {{\lambda_{WL} \cdot b_{MW}^{j}} - {c\;\Delta\; t_{\Phi}^{j}} + {c\;\Delta\; t_{P}^{j}}} \right)}}} & (86)\end{matrix}$where Φ_(i,1) ^(j)′ is the synthesized L1 carrier observation for thevirtual base location,

Φ_(i,2) ^(j)′ is the synthesized L2 carrier observation for the virtualbase location,

P_(i,1) ^(j)′ is the synthesized L1 code observation for the virtualbase location, and

P_(i,2) ^(j)′ is the synthesized L2 code observation for the virtualbase location.

The uncorrected synthesized base station data set 4045 is corrected at4050 to create a synthesized base station data set 3850 for the currenttime tag. The corrections includes one or more of the effects describedin Part 3: Observation Data Corrector, such as solid earth tides, phasewind-up, and antenna phase center variation. The corrected synthesizedbase station data set is:Φ_(i,1) ^(j)=Φ_(i,1) ^(j) ′−C _(i,1) ^(j)  (87)Φ_(i,2) ^(j)=Φ_(i,2) ^(j) ′−C _(i,2) ^(j)  (88)P _(i,1) ^(j) =P _(i,1) ^(j) ′−C _(i,1) ^(j)  (89)P _(i,2) ^(j) =P _(i,2) ^(j) ′−C _(i,2) ^(j)  (90)The synthesized base station data set generation is then complete forthe current time tag and is delivered to the differential processor3855.

In some embodiments the differential processor 3855 uses the broadcastephemeris to determine the satellite position and clock error, as inthis mode of positioning only approximate quantities are needed for thesatellite. This is also true when the differential processor is usingSBS data, however in some embodiments the processor optionally uses theavailable precise satellite data.

FIG. 37 shows an alternate embodiment 4200 which is a variant of theprocessing 3800 of FIG. 34. In this embodiment the precise satellitedata 3830 and rover observation data 3825 are sent to a PPP (PrecisePoint Positioning) engine 4210 rather or in addition to the differentialprocessor 3855. The PPP engine 4210 delivers the rover coordinates inplace of or in addition to those from the differential processor 3855.

FIG. 38 is a simplified view of the embodiment of FIG. 34. Thesynthesized GNSS data 3850 is created for a given location using precisesatellite data 3830. The synthesized data 3850 is forwarded to thedifferential processor 3855 which, also using the rover GNSS data 3825,computes the rover position 3860.

FIG. 39 is a timing diagram of a low-latency version of the processingof FIG. 34, FIG. 37 or FIG. 39. In this variant, the arrival an epoch ofrover observation data (e.g., 3825) or an epoch time tag (e.g., 3842) isused as a trigger for the generation of synthesized base station data(e.g., 3850). For example, a set of synthesized base station data (e.g.,3850) is generated for each epoch of rover observation data (e.g.,3825). The virtual base location (e.g., approximate rover position 3840)is updated from time to time as indicated by timing marks 4402-4408.Precise satellite data (e.g., precise satellite data 3830) is receivedfrom time to time as indicated by timing marks 4410-4424. Rover data(e.g., rover observations 3825) are received from time to time asindicated by timing marks 4426-4454. The arrivals of virtual baselocations, the precise satellite data and the rover data areasynchronous. Each arrival of an epoch of rover data (indicated by arespective one of timing marks 4426-4454) results in the generation of acorresponding set of virtual base station data (indicated by arespective one of timing marks 4456-4484). In each case it is preferredto use the latest virtual base station location and the latest precisesatellite data when processing an epoch of rover observation data withthe corresponding virtual base station data. Each pairing of rover dataand virtual base station data, e.g., of timing mark pair 4424 and 4456,results in the generation of a corresponding rover position, e.g, oftiming mark 4485. Generated rover positions are indicated by timingmarks 4485-4499.

In some embodiments a new SBS data epoch is created at each time a newrover data epoch is observed. FIG. 40 is a timing diagram of ahigh-accuracy version of the processing of FIG. 34, FIG. 37 or FIG. 38.In this variant, the arrival of a set of precise satellite data (e.g.,3830) is used as a trigger for the generation of synthesized basestation data (e.g., 3850). For example, a set of synthesized basestation data (e.g., 3850) is generated for each set of precise satellitedata (e.g., 3850). The virtual base location 3840 (e.g., approximaterover position) is updated from time to time as indicated by timingmarks 4502-4508. Precise satellite data (e.g., precise satellite data3830) are received from time to time as indicated by timing marks4510-4524. Synthesized base station data (e.g., 3850) are generated forexample from each new set of precise satellite data, as indicated bytiming marks 4526-4540. Rover data (e.g., rover observations 3825) arereceived from time to time as indicated by timing marks 4542-4570. Thearrivals of virtual base locations, the precise satellite data and therover data are asynchronous, but in this variant the synthesized basestation data sets are synchronized (have the same time tags) as withprecise satellite data sets, e.g., indicated by timing marks 4510 and4526, 4512 and 4528, etc. Each new epoch of rover data is processedusing the most recent synthesized base station data set. For example therover data epochs arriving at timing marks 4544 and 4536 are processedusing synthesized base station data prepared at timing mark 4526, etc.

In some embodiments a new SBS data epoch is created each time a newprecise satellite data set is obtained. FIG. 41 shows a variant 4600 ofthe process of FIG. 34, FIG. 37 or FIG. 38 in which the virtual baselocation 4605 is taken from any of a variety of sources. Someembodiments take as the virtual base location 4605 (a) the autonomousposition 4610 of the rover as determined for example by the rover'snavigation engine 3845 using rover data 3825. Some embodiments take asthe virtual base station location 4605 (b) a previous precise roverposition 4615 for example a precise rover position 4220 determined for aprior epoch by differential processor 3855 or by PPP engine 4210. Someembodiments take as the virtual base location 4605 (c) the autonomousposition 4610 of the rover as determined for example by the SBS module3835 using rover data 3825. Some embodiments take as the virtual baselocation 4605 (d) the autonomous position 4610 of the rover asdetermined for example by the SBS module 3835 using rover data 3825 andprecise satellite data 3830. Some embodiments take as the virtual basestation location 4605 an approximate rover location obtained from one ormore alternate position sources 4620, such as a rover positiondetermined by an inertial navigation system (INS) 4625 collocated withthe rover, the position of a mobile phone (cell) tower 4630 in proximityto a rover collocated with a mobile telephone communicating with thetower, user input 4635 such as a location entered manually by a user forexample with the aid of keyboard 3755 or other user input device, or anyother desired source 4640 of a virtual base station location.

Regardless of the source, some embodiments update the virtual basestation location 4605 or 3840 from time to time for use by SBS module3835 as indicated by arrow 4645. The virtual base station location 4605can be updated for example:

(a) never,

(b) for each epoch of rover data,

(c) for each n^(th) epoch of rover data,

(d) after a predetermined time interval,

(e) when the distance between the approximate rover antenna position(e.g., 3840) or autonomous rover antenna position (e.g., 4610) and thevirtual base station location (e.g., 4605) exceeds a predeterminedthreshold,

(f) when the distance between the approximate rover antenna position(e.g., 3840) or autonomous rover antenna position (e.g., 4610) and theprecise rover antenna position (e.g., 4220) exceeds a predeterminedthreshold,

(g) for each update of the approximate rover antenna position (e.g.,3840),

(h) for each update of the precise rover antenna position (e.g., 4220).

For case (a), the first virtual base station location (e.g., 4605) thatis provided to SBS module 3835 is used for the whole period during whichthe data processing is done. For case (b), the virtual base stationlocation (e.g., 4605) is updated every time a new epoch of the roverdata 3825 is collected, as this new epoch can be used to update therover approximate position 3840 which can be used as the virtual basestation location 4805. For cases (b) and (c) the virtual base stationlocation 4605 is updated every time a certain number (e.g., 1 to 10) ofepochs of rover data 3825 is collected. In case (d) the virtual basestation location 4605 is updated at a certain time interval (e.g., every10 seconds). Case (e) can be viewed as a mixture of cases (a) and (b),where the current virtual base station location 4605 is kept as long asthe distance between the current virtual base station location and theapproximate rover antenna position is less than a limiting distance(e.g., 100 m). Case (f) is similar to case (e), except that the distancebetween the virtual base station location and a recent precise roverposition is used. For case (g) the virtual base station location isupdated each time the approximate rover antenna position changes. Forcase (h) the virtual base station location is updated each time theprecise rover antenna position changes.

In some embodiments the virtual base station location 3840 used for thegeneration of the SBS data comes from the autonomous position solutionof the rover receiver, e.g., approximate rover position 3840. In someembodiments the virtual base station location 3840 is not the sameposition as the autonomous position solution, but somewhere close to it.

Some embodiments use as the virtual base station location 3840 a sourcesuch as: an autonomously determined position of the rover antenna, apreviously determined one of said rover antenna positions, a synthesizedbase station data generating module (e.g., 3835), a precise roverposition (e.g., 4220), a position determined by a PPP engine (e.g.,4210), a position determined by an inertial navigation system (e.g.,4625), a mobile telephone tower location (e.g., 4630), informationprovided by a user (e.g., 4635), or any other selected source (e.g.,4540).

In some embodiments the virtual base station location 3840 is not keptconstant throughout the rover observation period but is updated ifcertain conditions are met such as: never, for each epoch of rover data,when the distance between an approximate rover antenna position and thevirtual base station location exceeds a predetermined threshold, foreach update of the rover antenna positions, and for a specific GNSS timeinterval. In some embodiments a change of the virtual base stationlocation 3840 location is used to trigger the generation of a new SBSepoch of data.

In some embodiments the SBS data is used for any kind of between-stationdifferential GNSS processor, no matter what type data modeling isinvolved, such as processors using: aided inertial navigation (INS),integrated INS and GNSS processing, normal real-time kinematic (RTK),Instant RTK (IRTK, e.g., using L1/L2 for fast on-the-fly ambiguityresolution), Differential GPS (DGPS) float-solution processing, and/ortriple-differenced processing. In some embodiments the SBS data is usedin post-processing of rover data. In some embodiments the SBS data isused in real time (i.e., as soon as the rover observation is availableand a SBS record can be generated for it). In some embodiments the timetag of the rover matches the time tag of the SBS data within a fewmilliseconds.

Part 11.5 SBS References

Some references relevant to rover processing include:

-   Leandro R. F., Santos, M. C. and Langley R. B., (2006a). “UNB    Neutral Atmosphere Models: Development and Performance”. Proceedings    of ION NTM 2006, Monterey, Calif., January, 2006.-   Leandro R. F., Santos, M. C. and Langley R. B., (2006b). “Wide Area    Neutral Atmosphere Models for GNSS Applications”. Proceedings of ION    GNSS 2006, Fort Worth, Tex., September, 2006.-   Leandro, R. F. (2009). Precise Point Positioning with GPS: A New    Approach for Positioning, Atmospheric Studies, and Signal Analysis.    Ph.D. dissertation, Department of Geodesy and Geomatics Engineering,    Technical Report No. 267, University of New Brunswick, Fredericton,    New Brunswick, Canada, 232 pp.    Part 12: Rover Processing with Ambiguity Fixing

Part 12.1 Ambiguity Fixing Introduction

The common high accuracy absolute positioning solution (also calledPrecise Point Positioning, or PPP) makes use of precise satellite orbitand clock error information. This solution also uses iono-freeobservations because there is no information available about thebehavior of the ionosphere for the location of the rover receiver (fewcm). High accuracy absolute positioning solutions in this scenario havealways been based on float estimates of carrier-phase ambiguities, as itwas not possible to maintain the integer nature of those parametersusing un-differenced iono-free observations. Another issue concerningthe integer nature of un-differenced ambiguities is the presence ofnon-integer phase biases in the measurements. These biases have to bealso present in the correction data (e.g. clocks), otherwise theobtained ambiguities from the positioning filter will not be of integernature.

Typical observation models used in prior-art processing are:φ=R+dT−dt+T+N _(if)  (91)P=R+dT−dt+T  (92)whereφ is the phase observation at the rover of a satellite signal (measureddata),P is the code observation at the rover of a satellite signal (measureddata),R is the range from satellite to rover at the transmission time of theobserved signals,dT is the receiver clock (also called herein a code-leveled receiverclock or receiver code clock or standard receiver clock),dt is the satellite clock (also called herein a code-leveled satelliteclock or satellite code clock or standard satellite clock),T is the tropospheric delay of the satellite to rover signal path, andN_(if) is the iono-free ambiguity.

Typical prior-art PPP processing uses the ionospheric-free phase φ andcode P observations (measurements) of the signals of multiple satellitesalong with externally-provided satellite clock information dt in anattempt to estimate values for the receiver position (X^(r), Y^(r), andz^(r)), receiver clock dT, tropospheric delay T and the iono-free floatambiguities N_(if) ^(Float). The state vector of parameters to beestimated in a Kalman-filter implementation, for each satellite jobserved at the rover is thus:

$\begin{matrix}\begin{Bmatrix}X^{r} \\Y^{r} \\Z^{r} \\{dT} \\T \\N_{if}^{j^{Float}}\end{Bmatrix} & (93)\end{matrix}$

Some embodiments of the invention provide for absolute positioning whichtakes into account the integer nature of the carrier-frequencyambiguities in real time processing at the rover. By real timeprocessing is meant that the observation data is processed as soon as:(a) the data is collected; and (b) the necessary information (e.g.satellite corrections) are available for doing so. Novel procedures usespecial satellite clock information so that carrier-phase (also calledphase) ambiguity integrity is maintained in the ambiguity state valuescomputed at the rover. The rover's processing engine handles thesatellite clock error and a combination of satellite biases that areapplied to the receiver observations.

Prior-art PPP engines are not able to use phase-leveled clocks, or atleast are not able to take advantage of the integer nature of theseclocks. Some embodiments of the invention make use of this newinformation, e.g., in a modified position engine at the rover.

One goal of using phase-leveled satellite clocks and bias information isto obtain supposed integer ambiguities, which are used to obtain anenhanced position solution which takes advantage of the integer natureof the ambiguities. This improves the position solution (4710) ascompared with a position solution (4705) in which the ambiguities areconsidered to be float numbers, as shown in FIG. 47.

The result of such prior-art PPP processing does not allow the integernature iono-free ambiguities N_(if) to be reliably determined, butinstead only enables estimation of iono-free float ambiguities N_(if)^(Float). The iono-free float ambiguities N_(if) ^(Float) can be viewedas including additional effects that can be interpreted as an error esuch that:N _(if) ^(Float) =[αN _(WL) ^(Integer) +βN ₁ ^(Integer) ]+e  (94)N _(if) ^(Float) =N _(if) ^(PL) +e  (95)where

-   N_(if) ^(Float) is an iono-free float ambiguity representing a    combination of an iono-free integer ambiguity N_(if) ^(Integer) and    an error e-   N_(WL) ^(Integer) is a Widelane integer ambiguity-   α is an Widelane ambiguity coefficient-   N₁ ^(Integer) is an L1 integer ambiguity-   β is an L1 ambiguity coefficient-   N_(if) ^(PL) is a phase-leveled iono-free ambiguity

In some particular cases it is possible to consider N_(if)^(Float)≅N_(if) ^(Integer) in a practical way. Therefore there are caseswhere the formulation of the float ambiguity N_(if) ^(Float) as acomposition of other two integer-nature ambiguity (as in N_(if)^(Float)=[αN_(WL) ^(Integer)+βN₁ ^(Integer)]+e) is not necessary.

Part 12.2 Determining Iono-Free Phase-Leveled Ambiguities N_(if) ^(PL):Option 1

Some embodiments of the invention are based on eliminating the un-wantedeffects, or in other words the iono-free float ambiguity error e toallow determination of iono-free phase-leveled ambiguities N_(if) ^(PL).To eliminate the error e, the phase observation model is redefined:φ=R+dT _(p) −dt _(p) +T+N _(if) ^(P)  (96)where

dT_(p) is a phase-leveled receiver clock (also called a receiver phaseclock),

dt_(p) is a phase-leveled satellite clock (also called a satellite phaseclock), and

N_(if) ^(PL) is a phase-leveled iono-free ambiguity.

Satellite phase clock dt_(p) in (96) is phase-based and has integernature and, in contrast to Eq. (94), it can provide phase-leveledambiguities free of error e, so that:N _(if) ^(PL) =[αN _(WL) ^(Integer) +βN ₁ ^(Integer)]  (97)

The phase-leveled iono-free ambiguity N_(if) ^(PL) is not an integer butyet has an integer nature; the phase-leveled iono-free ambiguity N_(if)^(PL) can be interpreted as a combination of two integer ambiguities.One way of doing so is assuming that it is a combination of a widelaneinteger ambiguity N_(WL) ^(Integer) and an L1 integer ambiguity N₁^(Integer) in which the widelane ambiguity coefficient α and the L1ambiguity coefficient are not necessarily integers.

The phase-leveled clock dt_(p) can be quite different from a standard(code-leveled) satellite clock dt. To avoid confusion, the term dt_(p)is used herein to denote the phase-leveled satellite clock and the termdt_(c), is used herein to denote the standard (code-leveled) satelliteclock, i.e., dt_(c)=dt.

The introduction of the phase-leveled satellite clock term dt_(p) in(96) means that the corresponding receiver clock term dT_(p) is alsophase leveled. The term dT_(p) is used herein to denote thephase-leveled receiver clock and the term dT_(c) is used to denote thestandard (code-leveled) receiver clock, i.e., dT_(c)=dT. In apositioning engine where phase and code measurements are usedsimultaneously two clock states are therefore modelled for the receiver;in this formulation these are the phase-leveled receiver clock dT_(p)and the standard (code-leveled) receiver clock dT_(c).

As mentioned above, typical prior-art PPP processing attempts toestimate values for four parameters for each observed satellite:receiver coordinates X^(r), Y^(r), and Z^(r), receiver clock dT,tropospheric delay T and the iono-free float ambiguities N_(if)^(Float). The introduction of phase-leveled clock terms adds one furtherparameter to be estimated in the rover engine: phase-leveled receiverclock dT_(p). The restated observation models are therefore as shown inequations (91) and (92), respectively and reproduced here:Φ=R+dT _(p) −dt _(p) +T+N _(if) ^(PL)  (98)P=R+dT _(c) −dt _(c) +T  (99)

In this formulation each observation type (phase φ or code P) iscorrected with its own clock type (phase-leveled satellite clock dt_(p)or code-leveled satellite clock dt_(c)). Some embodiments of theinvention therefore use the phase φ and code P observations(measurements) of the signals of multiple satellites observed at a roveralong with externally-provided code-leveled (standard) satellite clockinformation dt_(c) and phase-leveled satellite clock information dt_(p)to estimate values for range R, code-leveled receiver clock dT_(c),phase-leveled receiver clock dT_(p), tropospheric delay T and theiono-free phase-leveled ambiguities N_(if) ^(PL). The state vector ofparameters to be estimated in a Kalman-filter implementation, for eachsatellite j observed at the rover is thus:

$\begin{matrix}\begin{Bmatrix}X^{r} \\Y^{r} \\Z^{r} \\{dT}_{c} \\{dT}_{p} \\T \\N_{if}^{j^{PL}}\end{Bmatrix} & (100)\end{matrix}$

Part 12.3 Determining Iono-Free Phase-Leveled Ambiguities N_(if) ^(PL):Option 2

A second formulation for handling the phase-leveled information is tosubstitute for the code-leveled receiver clock dT_(c), an offset δdT_(p)representing the difference between the code-leveled receiver clockdT_(c), and the phase-leveled receiver clock dT_(p):δdT _(p) =dT _(c) −dT _(p)  (101)so that equations (91) and (92) become, respectively:φ=R+dT _(p) −dt _(p) +T+N _(if) ^(PL)  (102)P=R+dT _(p) +δdT _(p) −dt _(c) +T  (103)

Accordingly, some embodiments of the invention use the phase φ and codeP observations (measurements) of the signals of multiple satellitesobserved at a rover along with externally-provided code-leveled(standard) satellite clock information dt_(c) and phase-leveledsatellite clock information dt_(p) to estimate values for range R,phase-leveled receiver clock dT_(p), receiver-clock offset δdT_(p),tropospheric delay T and the iono-free phase-leveled ambiguities N_(if)^(PL). The state vector of parameters to be estimated in a Kalman-filterimplementation, for each satellite j observed at the rover is thus:

$\begin{matrix}\begin{Bmatrix}X^{t} \\Y^{r} \\Z^{r} \\{dT}_{p} \\{\delta\;{dT}_{p}} \\T \\N_{if}^{j^{PL}}\end{Bmatrix} & (104)\end{matrix}$

This second formulation still has five types of parameters to beestimated, but because δdT_(p) is an offset there is less process noisein the Kalman filter than for state vector (100). The advantage of suchmodel as compared to option 1 is that the stochastic model can be setupdifferently, meaning that the noise level assigned to a clock bias state(e.g. δdT_(p)) can be different from a clock state (e.g. dT_(c)).Assuming that phase- and code-leveled clocks behave in a similar way,the noise level needed for modelling a bias state should be less thanfor modelling a clock state.

Part 12.4 Determining Iono-Free Phase-Leveled Ambiguities N_(if) ^(PL):Option 3

A third formulation for handling the phase-leveled information is tosubstitute for the phase-leveled receiver clock dT_(p) an offset−δdT_(p) representing the difference between the phase-leveled receiverclock dT_(p) and the code-leveled receiver clock dT_(c):−δdT _(p) =dT _(p) −dT _(c)  (105)so that equations (91) and (92) become, respectively:φ=R−dT _(p) +dT _(c) −dt _(p) +T+N _(if) ^(PL)  (106)P=R+dT _(c) +δdT _(c) −dt _(c) +T  (107)

Accordingly, some embodiments of the invention use the phase φ and codeP observations (measurements) of the signals of multiple satellitesobserved at a rover along with externally-provided code-leveled(standard) satellite clock information dt_(c) and phase-leveledsatellite clock information dt_(p) to estimate values for range R,code-leveled receiver clock dT_(c), receiver-clock offset −δdT_(p),tropospheric delay T and the iono-free phase-leveled ambiguities N_(if)^(PL). The state vector of parameters to be estimated in a Kalman-filterimplementation, for each satellite j observed at the rover is thus:

$\begin{matrix}\begin{Bmatrix}X^{r} \\Y^{r} \\Z^{r} \\{dT}_{c} \\{{- \delta}\;{dT}_{p}} \\T \\N_{if}^{j^{PL}}\end{Bmatrix} & (108)\end{matrix}$This third formulation still has five types of parameters to beestimated, but because −δdT_(p) is an offset there is less process noisein the Kalman filter than for state vector (100).

Part 12.5 Determining Iono-Free Phase-Leveled Ambiguities N_(if) ^(PL):Option 4

A fourth formulation for handling the phase-leveled information firstestimates the iono-free float ambiguities N_(if) ^(j) ^(Float) usingcode-leveled (standard) satellite clocks dt_(c) for phase observations φand for code observations P as in (95), and shifts the iono-free floatambiguities N_(if) ^(j) ^(Float) afterward using the phase-leveled clockinformation to obtain the iono-free phase-leveled ambiguities N_(if)^(PL).

The starting point for this formulation is:φ=R+dT _(c) −dt _(c) +T+N _(if) ^(Float)  (109)P=R+dT _(c) −dt _(c) +T  (110)Note that (109) and (110) are identical to (91) and (92), sincedT_(c)=dT and dt_(c)=dt.

This fourth formulation, as in the typical prior-art PPP processingdiscussed above, uses the phase φ and code P observations (measurements)of the signals of multiple satellites observed at a rover along withexternally-provided code-leveled (standard) satellite clock informationdt_(c) to estimate values for range R, code-leveled receiver clockdT_(c), tropospheric delay T and the iono-free float ambiguities N_(if)^(Float). The state vector of parameters to be estimated in aKalman-filter implementation, for each satellite j observed at the roveris thus:

$\begin{matrix}\begin{Bmatrix}X^{r} \\Y^{r} \\Z^{r} \\{dT}_{c} \\T \\N_{if}^{j^{Float}}\end{Bmatrix} & (111)\end{matrix}$

As with the prior-art PPP processing, the estimation of parameter valuesof state vector (111) does not allow the iono-free float ambiguitiesN_(if) ^(j) ^(Float) to be reliably determined as iono-freephase-leveled ambiguities N_(if) ^(PL):N _(if) ^(Float) =N _(if) ^(PL) +e=[αN _(WL) ^(Integer) +βN ₁ ^(Integer)]+e  (112)where

-   -   N_(if) ^(Float) is an iono-free float ambiguity representing a        combination of a iono-free phase-leveled ambiguity N_(if) ^(PL)        and an error e,    -   N_(WL) ^(Integer) is a Widelane integer ambiguity,    -   α is a Widelane ambiguity coefficient,    -   N₁ ^(Integer) is an L1 integer ambiguity, and    -   β is an L1 ambiguity coefficient.

This fourth formulation assumes that error e represents the differencebetween the code-leveled (standard) satellite clock dt_(c) and thephase-leveled satellite clock dt_(p):e=dt _(c) −dt _(p)  (113)so thatN _(if) ^(PL) =N _(if) ^(Float)−(dt _(c) −dt _(p))  (114)N _(if) ^(PL) =[αN _(WL) ^(Integer) +βN ₁ ^(Integer) ]+e−e  (115)N _(if) ^(PL) =[αN _(WL) ^(Integer) +βN ₁ ^(Integer)]  (116)

To summarize, this fourth formulation obtains iono-free floatambiguities N_(if) ^(Float) from (109) and then shifts each of these bythe difference between the standard (code-leveled) satellite clockdt_(c) ^(j) and the phase-leveled clock dt_(p) ^(j) for the respectivesatellite j to obtain the iono-free phase-leveled ambiguities N_(if)^(PL) as shown in (114).

For this purpose, the rover can be provided with (1) the standard(code-leveled) satellite clock dt_(c) ^(j) and the phase-leveled clockdt_(p) ^(j) for each satellite j observed at the rover, or (2) thestandard (code-leveled) satellite clock dt_(c) ^(j) and a clock biasδt_(c) representing the difference between the standard (code-leveled)satellite clock dt_(c) ^(j) and the phase-leveled clock dt_(p) ^(j), or(3) the phase-leveled clock dt_(p) ^(j) and a clock bias δt_(p)representing the difference between the phase-leveled clock dt_(p) ^(j)and the standard (code-leveled) satellite clock dt_(c) ^(j). These areequivalent for processing purposes as can be seen from (114).

This fourth formulation has advantages and disadvantages. A disadvantageis that it assumes the behavior of the standard (code-leveled) satelliteclock dt_(c) ^(j) and the phase-leveled clock dt_(p) ^(j) for eachsatellite j observed at the rover is substantially the same over theperiod of time for the ambiguity was computed. An advantage is thatjumps (integer cycle slips) which might occur in the phase clockestimations can be more easily handled in processing at the rover.

Part 12.6 Determining Position Using Melbourne-WüBbena Biases b_(WL)^(j):

After the iono-free phase-leveled ambiguities N_(if) ^(j) ^(PL) aredetermined for a given epoch, they can be single-differenced as∇^(ab)N_(if) ^(PL), single-differenced integer (fixed) widelaneambiguities ∇^(ab)N_(WL) ^(Integer) can be removed from them to obtainsingle-differenced L1 float ambiguities ∇^(ab)N₁ ^(Float), and thesingle-differenced L1 float ambiguities ∇^(ab)N₁ ^(Float) can be fixedas single-differenced L1 integer ambiguities ∇^(ab)N₁ ^(Integer).

Single-differenced widelane integer ambiguities ∇^(ab)N_(WL) ^(Integer)are estimated in a widelane-ambiguity filter which runs in parallel withthe geometry filter of the rover's processing engine. The rover receiveris provided with a Melbourne-Wübbena bias b_(MW) ^(j) for each of the jsatellites in view, e.g., from an external source of datacorrections—see Part 7 (MW Bias Processor). Melbourne-Wübbena biasb_(MW) ^(j) can be computed as:

$\begin{matrix}{\frac{\phi_{WL}^{j} - P_{NL}^{j}}{\lambda_{WL}} = {N_{WL}^{j^{Integer}} + b_{MW}^{j} - b_{MW}^{R}}} & (117)\end{matrix}$where

φ_(WL) ^(j) is the widelane carrier-phase combination of roverobservations of satellite j

P_(NL) ^(j) is the narrowlane code combination of rover observations ofsatellite j

λ_(WL) is the widelane wavelength

N_(WL) ^(j) ^(Integer) is the widelane integer ambiguity for satellite j

b_(MW) ^(R) is the Melbourne-Wübbena bias for the rover R.

The widelane ambiguity filter eliminates the rover's Melbourne-Wübbenabias b_(WL) ^(R) by differencing (115) for each pairing of satellites“a” and “b” to obtain the single-differenced widelane integerambiguities ∇^(ab)N_(WL) ^(Integer):

$\begin{matrix}{{\nabla^{ab}N_{WL}^{Integer}} = {{\nabla^{ab}\left( \frac{\overset{\_}{\phi_{WL} - P_{NL}}}{\lambda_{WL}} \right)} - {\nabla^{ab}b_{MW}}}} & (118)\end{matrix}$where∇^(ab) b _(MW) =b _(MW) ^(a) −b _(MW) ^(b)  (119)

Once the single-differenced widelane integer ambiguities ∇^(ab)N_(WL)^(Integer) are known, they are removed from the single-differencediono-free phase-leveled ambiguities ∇^(ab)N_(if) ^(PL) to obtain thesingle-differenced L1 float ambiguities ∇^(ab)N₁ ^(Float).

The float Kalman filter used to estimate the iono-free phase-leveledambiguities N_(if) ^(PL) (or the iono-free float ambiguities N_(if) ^(j)^(Float) in the third alternate formulation discussed above) also givesC_(N) _(if) , the covariance matrix of the iono-free phase-leveledambiguities N_(if) ^(PL). Because the widelane ambiguities are integer(fixed) values after their values are found, C_(N) _(if) is the same forN_(if) ^(PL) as for N_(if) ^(j) ^(Float) .

From (95) it is known that:∇N _(if) ^(ab) ^(PL) =α∇N _(WL) ^(ab) ^(Integer) +β∇N ₁ ^(ab) ^(Float)  (120)where

-   -   ∇N_(if) ^(ab) ^(PL) is the single-difference phase-leveled        iono-free ambiguity (differenced between satellites “a” and “b”)    -   ∇N_(WL) ^(ab) ^(Integer) is the single-difference widelane        integer ambiguity (differenced between satellites “a” and “b”)    -   ∇N₁ ^(ab) ^(Float) is the single-difference L1 float ambiguity        (differenced between satellites “a” and “b”)

Therefore

$\begin{matrix}{{\nabla N_{1}^{{ab}^{Float}}} = \frac{{\nabla N_{if}^{{ab}^{PL}}} - {\alpha{\nabla N_{WL}^{{ab}^{Integer}}}}}{\beta}} & (121)\end{matrix}$

Because ∇N_(WL) ^(ab) ^(Integer) are fixed (integer) values, it isassumed that the respective covariance matrices of the L1 floatambiguities N₁ ^(ab) ^(Float) and the iono-free phase-leveledambiguities N_(if) ^(j) ^(PL) are related by:C _(N) ₁ _(Float) =C _(Nif) _(PL) ·F ²  (122)where

C_(N) ₁ _(Float) is the covariance matrix of the L1 float ambiguities N₁^(j) ^(Float)

C_(Nif) _(PL) is the covariance matrix of the iono-free phase-leveledambiguities N_(if) ^(j) ^(PL)

F is a factor to convert the units of the variances from iono-freecycles to L1 cycles.

The desired “fixed” (integer-nature) single-differenced L1 floatambiguities ∇N₁ ^(ab) ^(Integer) can be determined from thesingle-differenced L1 float ambiguities ∇N₁ ^(ab) ^(Float) and thecovariance matrix C_(N) ₁ _(Float) of the L1 float ambiguities N₁ ^(ab)^(Float) using well-known techniques, such as Lambda (Jonge et al.1994), modified Lambda (Chan et al. 2005), weighted averaging ofcandidate sets, or others.

Having determined the single-differenced integer widelane ambiguities∇N_(WL) ^(ab) ^(Integer) and the single-differenced integer L1ambiguities, integer-nature iono-free ambiguities ∇N_(if) ^(ab)^(Integer) are determined from:∇N _(if) ^(ab) ^(Integer) =α∇N _(WL) ^(ab) ^(Integer) +β∇N ₁ ^(ab)^(Integer)   (123)

The integer-nature iono-free ambiguities ∇N_(if) ^(ab) ^(Integer) areintroduced (“pushed”) as a pseudo-observation into the Kalman floatfilter (or optionally a copy of it) to determine a rover position basedon integer-nature ambiguities. The state vector of the float filter copyis thus:

$\begin{matrix}\begin{Bmatrix}X^{r} \\Y^{r} \\Z^{r} \\{dT}_{c} \\T\end{Bmatrix} & (124)\end{matrix}$

The rover position can then be determined with an accuracy (andprecision) substantially better than for the typical prior-art PPPprocessing in which the ambiguities are considered to be float numbers,as shown in FIG. 42.

FIG. 43 shows a block diagram of a positioning scheme 4800 usingambiguity fixing in accordance with some embodiments of the invention.In this example, after satellite clock (clock and orbit) corrections4802 and MW bias corrections 4804 are received, e.g., via a link such ascommunications satellite 4806, they are used along with GNSS data 4808collected by the rover receiver 4810, e.g., from observations of GNSSsatellites 4812, 4814, 4816. Processing is performed in two filters: afirst filter 4818 with a geometric, ionospheric-free model (Part 12.5,Equations 107-108), and a second filter 4820 with a geometry- andionospheric-free model (Part 12.6, Equation 116). From the first filter4818 phase-leveled ionospheric-free ambiguities 4822 with correspondingcovariance matrix 4824 are obtained. From the second filter 4820 integerwide-lane ambiguities 4826 are obtained. At 4828, single-differencedinteger-nature float ambiguities 4830 are determined from thephase-leveled ionospheric-free ambiguities 4822 and the wide-laneambiguities 4826. The single-differenced integer-nature floatambiguities 4830 are re-processed at 4832 using aninteger-least-squares-based approach (to “fix” them as that term isdefined herein to mean fixing as integers or forming weighted averages)to obtain single-differenced, integer-nature L1 ambiguities 4834. Theseambiguities 4834 are then re-combined at 4836 with the integer naturewide-lane ambiguities 4826 to yield single-differenced integer-natureionospheric-free ambiguities 4840. These ambiguities 4840 are thenapplied in a third filter 4842 which estimates rover receiver clock4844, and satellite-rover ranges 4846 from which the receiver positionis determined.

FIG. 44 shows a block diagram of a positioning scheme 4900 usingambiguity fixing in accordance with some embodiments of the invention.In this example, satellite clock corrections 4902 received, e.g., via alink such as communications satellite 4904, are used along with GNSSdata 4906 collected by the rover receiver 4908, e.g., from observationsof GNSS satellites 4910, 4912, 4814, in a first filter 4916. Filter 4916estimates float values for carrier ambiguities 4918 with correspondingcovariances 4920. At 4922, integer-nature carrier-phase ambiguities 4924are determined using float ambiguities 4918 and the respectivecovariance matrix 4920 provided by first filter 4916. The integer-naturecarrier-phase ambiguities 4924 and satellite clock corrections 4902 andGNSS data 4906 are used in a second filter 4926 to determine thereceiver position 4928.

FIG. 45 shows a block diagram of a positioning scheme 5000 usingambiguity fixing in accordance with some embodiments of the invention.In this example, satellite clock corrections 5002 received, e.g., via alink such as communications satellite 5004, are used along with GNSSdata 5006 collected by the rover receiver 5008, e.g., from observationsof GNSS satellites 5010, 5012, 5014, in a first filter 5016. Filter 5016estimates values for carrier ambiguities 5018 with correspondingcovariances 5020. At 5022, integer-nature single-differencedcarrier-phase ambiguities 5024 are determined using float ambiguities5018 and the respective covariance matrix 5020 provided by first filter5016. The integer-nature single-differenced carrier-phase ambiguities5024 and satellite clock corrections 5002 and GNSS data 5006 are used ina second filter 5026 to determine the receiver position 5028.

FIG. 46 shows a block diagram of a positioning scheme 5100 usingambiguity fixing in accordance with some embodiments of the invention.In this example, satellite clock corrections 5102 and satellite MWbiases 5104 received, e.g., via a link such as communications satellite5106, are used along with GNSS data 5108 collected by the rover receiver5110, e.g., from observations of GNSS satellites 5112, 5114, 5116 in afirst filter 5118. Filter 5118 estimates values for carrier-phaseionospheric-free float ambiguities 5120 with corresponding covariances5122. A third filter 5124 uses the satellite MW bias corrections 5104and the GNSS data 5108 to determine wide-lane carrier ambiguities 5126.At 5128, integer-nature carrier-phase ambiguities 5130 are determinedusing the float iono-free ambiguities 5120 and the respective covariancematrix 5122 provided by first filter 5118 and the wide-lane carrierambiguities 5126 provided by third filter 5124. A second filter 5132uses the integer-nature carrier-phase ambiguities 5130 with the GNSSdata 5108 and the satellite clock corrections 5102 to determine receiverposition 5134.

FIG. 47 shows a block diagram of a positioning scheme 5200 usingambiguity fixing in accordance with some embodiments of the invention.In this variant of the example of FIG. 46, satellite clock corrections5202 and satellite MW biases 5204 are received, e.g., via a link such ascommunications satellite 5206. Satellite clock corrections 5202 are usedalong with GNSS data 5208 collected by the rover receiver 5210, e.g.,from observations of GNSS satellites 5212, 5214, 5216 in a first filter5218. First filter 5218 estimates values for float ambiguities 5220 withcorresponding covariances 5222. A third filter 5224 uses the satelliteMW bias corrections 5204 and the GNSS data 5208 to determine wide-lanecarrier ambiguities 5228. At 5228, integer-nature ambiguities 5230 aredetermined from the carrier ambiguities 5220, the carrier ambiguitiescovariances 5222 and the widelane carrier ambiguities 5226, using acovariance matrix which is scaled with a certain factor (see, e.g.,Equation 120). A second filter 5232 uses the integer-naturecarrier-phase ambiguities 5230 with the GNSS data 5208 and the satelliteclock corrections 5202 to determine receiver position 5234.

FIG. 48 shows a block diagram of a positioning scheme 5300 usingambiguity fixing in accordance with some embodiments of the invention.In this variant of the examples of FIG. 46 and FIG. 47, satellite clockcorrections 5302 and satellite MW biases 5304 are received, e.g., via alink such as communications satellite 5306. Satellite clock corrections5302 are used along with GNSS data 5308 collected by the rover receiver5310, e.g., from observations of GNSS satellites 5312, 5314, 5316 in afirst filter 5318. First filter 5318 estimates values for floatambiguities 5320 with corresponding covariances 5322. A third filter5324 uses the satellite MW bias corrections 5304 and the GNSS data 5308to determine single-differenced-between-satellites wide-lane carrierambiguities 5326. At 5328, single-differenced-between-satellitesinteger-nature carrier-phase ambiguities 5330 are determined from thecarrier-phase ambiguities 5320, the carrier ambiguities covariances 5322and the widelane carrier ambiguities 5326, using a covariance matrixwhich is scaled with a certain factor (see, e.g., Equation 120). Asecond filter 5232 uses the integer-nature carrier-phase ambiguities5330 with the GNSS data 5308 and the satellite clock corrections 5302 todetermine receiver position 5334.

FIG. 49 shows a block diagram of a positioning scheme 5400 usingambiguity fixing in accordance with some embodiments of the invention.In this variant, satellite clock corrections 5402 and satellite MWbiases 5404 are received, e.g., via a link such as communicationssatellite 5406. Satellite clock corrections 5402 are used along withGNSS data 5408 collected by the rover receiver 5410, e.g., fromobservations of GNSS satellites 5412, 5414, 5416 in a first filter 5418.First filter 5418 estimates values for float ambiguities 5420 withcorresponding covariances 5422. A third filter 5424 uses the satelliteMW bias corrections 5404 and the GNSS data 5408 to determine wide-lanecarrier ambiguities 5426. At 5428, integer-nature iono-free ambiguities5430 of two carrier frequencies (e.g., L1 and L2) are determined fromthe carrier ambiguities 5420, the carrier ambiguities covariances 5422and the widelane carrier ambiguities 5426, using a covariance matrixwhich is scaled with a certain factor (see, e.g., Equation 120). Asecond filter 5432 uses the integer-nature carrier-phase ambiguities5430 with the GNSS data 5408 and the satellite clock corrections 5402 todetermine receiver position 5434. The integer-nature carrier ambiguities5430 can be sets of L1 and L2 ambiguities, or sets of L2 and L5ambiguities, or sets of any linear combination of two or more GNSSfrequencies.

FIG. 50 shows a block diagram of a positioning scheme 5500 usingambiguity fixing in accordance with some embodiments of the invention.In this variant, satellite clock corrections 5502 and ionospheric delayinformation 5504 and satellite MW biases 5506 are received, e.g., via alink such as communications satellite 5508. Satellite clock corrections5502 and ionospheric delay information 5504 are used along with GNSSdata 5510 collected by the rover receiver 5512, e.g., from observationsof GNSS satellites 5514, 5516, 5518 in a first filter 5520. First filter5520 estimates values for float ambiguities 5522 with correspondingcovariances 5524. A third filter 5526 uses the satellite MW biascorrections 5506 and the GNSS data 5510 to determine wide-lane carrierambiguities 5528. At 5530, integer-nature L1 ambiguities 5532 aredetermined from the carrier ambiguities 5522, the carrier ambiguitiescovariances 5524 and the widelane carrier ambiguities 5528, using acovariance matrix which is scaled with a certain factor (see, e.g.,Equation 120). A second filter 5534 uses the integer-nature L1carrier-phase ambiguities 5532 with the GNSS data 5510 and the satelliteclock corrections 5502 and ionospheric delay information 5504 todetermine receiver position 5536. In further variants of FIG. 50 theionospheric delay information 5504 is used to feed one or more filtersused in the data processing, and/or the determined integer-natureambiguities 5532 used for determining the receiver position 5536 can besets of L1 ambiguities or L2 ambiguities or L5 ambiguities, or sets ofambiguities of any GNSS frequency.

FIG. 51 is the same as FIG. 54, in which the second filter 5632 is anindependent filter from the first filter 5418 and third filter 5424.

FIG. 52 shows a variation 5700 of the embodiment of FIG. 56 in which thesecond filter 5732 is a copy of the first filter 5418.

FIG. 53 shows a variation 5800 of the embodiments of FIG. 51 and FIG.52, in which the second filter 5632 of FIGS. 51 and 5732 of FIG. 52 isreplaced by the first filter 5418. This means that when theinteger-nature ionospheric-free ambiguities 5430 are determined, theyare fed back to the first filter 5418 which is then used to determinethe receiver position 5434.

FIG. 54 is a detailed view of an embodiment of the first filter 5418,showing that the satellite clock corrections 5402 include code-leveledsatellite clock corrections 5906 and phase-leveled satellite clockcorrections 5908. The code-leveled satellite clock corrections 5906 areused at 5914 for modeling GNSS observations in an observation filter5912. The resulting code-leveled float carrier ambiguities 5918 areadapted at 5920 to the level of the phase-leveled satellite clocks 5908by applying the difference between the code-leveled satellite clock 5906and the phase-leveled satellite clock 5908 to obtain phase-leveledcarrier ambiguities 5420. Observation filter 5912 also providescovariances 5422 of the carrier ambiguities.

FIG. 55 is a detailed view of an embodiment of the first filter 5418 inwhich the code-leveled satellite clock corrections 5906 are used in anobservation filter 6012 for modeling code observations at 6014. Thephase-leveled satellite clock 5908 is used at 6016 for modelingcarrier-phase observations. The resulting ambiguities from theobservation filter 6012 are the phase-leveled carrier ambiguities 5420.The observation filter 6012 also provides covariances 5422 of thecarrier ambiguities.

FIG. 56 shows a variant of previous FIGS. in which the integer-natureambiguities are determined at 6128 using at least one of: rounding thefloat ambiguity to the nearest integer, choosing best integer candidatesfrom a set of integer candidates generated using integer least squares,and computing float values using a set of integer candidates generatedusing integer least squares.

FIG. 57 shows a variant of previous FIGS. in which at least one of thefirst filter 5418 and the second filter 5432 further estimates values6202, 6252, respectively including at least one of values for: receiverphase-leveled clock states 6204, 6254, receiver code-leveled clockstates 6606, 6256, tropospheric delay states 6208, 6258, receiver clockbias states 6210, 6260 representing a difference per satellite betweencode-leveled receiver clock and phase-leveled receiver clock, andmultipath states 6212, 6262.

Part 12.7 Ambiguity Fixing References

Some references relevant to ambiguity fixing include:

-   Jonge de, P. J., and C. C. J. M. Tiberius (1994). A new GPS    ambiguity estimation method based on integer least squares.    Proceedings of the 3rd International Symposium on Differential    Satellite Navigation Systems DSNS '94, London, UK, April 18-22,    Paper No. 73, 9 pp.-   X.-W. Chang, X. Yang and T. Zhou (2005). MLAMBDA: a modified LAMBDA    method for integer least-squares estimation. Journal of Geodesy,    Springer Berlin/Heidelberg. Volume 79, Number 9/December, 2005, pp.    552-565.    Part 13: Summary of Some of the Inventive Concepts

Section 13A: MW (Melbourne-Wübbena) Bias Processing (A-2565)

-   1. [MW Processing] A method of processing a set of GNSS signal data    derived from code observations and carrier-phase observations at    multiple receivers of GNSS signals of multiple satellites over    multiple epochs, the GNSS signals having at least two carrier    frequencies, comprising:    -   a. forming an MW (Melbourne-Wübbena) combination per        receiver-satellite pairing at each epoch to obtain a MW data set        per epoch, and    -   b. estimating from the MW data set per epoch an MW bias per        satellite which may vary from epoch to epoch, and a set of WL        (widelane) ambiguities, each WL ambiguity corresponding to one        of a receiver-satellite link and a satellite-receiver-satellite        link, wherein the MW bias per satellite is modeled as one of (i)        a single estimation parameter and (ii) an estimated offset plus        harmonic variations with estimated amplitudes.-   2. The method of 1, further comprising applying corrections to the    GNSS signal data.-   3. The method of one of 1-2, further comprising smoothing at least    one linear combination of GNSS signal data before estimating an MW    bias per satellite.-   4. The method of one of 1-3, further comprising applying at least    one MW bias constraint.-   5. The method of one of 1-4, further comprising applying at least    one integer WL ambiguity constraint-   6. The method of one of 1-4, further comprising using a spanning    tree (ST) over one of an observation graph and a filter graph for    constraining the WL ambiguities.-   7. The method of one of 1-4, further comprising using a minimum    spanning tree (MST) on one of an observation graph and a filter    graph for constraining the WL ambiguities.-   8. The method of 7, wherein the minimum spanning tree is based on    edge weights, each edge weight derived from receiver-satellite    geometry.-   9. The method of 8, wherein the edge weight is defined with respect    to one of (i) a geometric distance from receiver to satellite, (ii)    a satellite elevation angle, and (iii) a geometric distance from    satellite to receiver to satellite, and (iv) a combination of the    elevations under which the two satellites in a single differenced    combination are seen at a station.-   10. The method of 7, wherein the minimum spanning tree is based on    edge weights, with each edge weight based on WL ambiguity    information, defined with respect to one of (i) difference of a WL    ambiguity to integer, (ii) WL ambiguity variance, and (iii) a    combination of (i) and (ii).-   11. The method of one of 1-10, further comprising fixing at least    one of the WL ambiguities as an integer value.-   12. The method of one of 1-10, further comprising determining    candidate sets of WL integer ambiguity values, forming a weighted    combination of the candidate sets, and fixing at least one of the WL    ambiguities as a value taken from the weighted combination.-   13. The method of one of 11-12, wherein the estimating step    comprises introducing fixed WL ambiguities so as to estimate MW    biases which are compatible with fixed WL ambiguities.-   14. The method of 13, wherein the estimating step comprises applying    an iterative filter to the MW data per epoch and wherein introducing    fixed WL ambiguities comprises one of (i) putting the fixed WL    ambiguities as observations into the filter, (ii) putting the fixed    WL ambiguities as observations into a copy of the filter generated    after each of a plurality of observation updates, and (iii) reducing    the MW combinations by the fixed WL ambiguities and putting the    resulting reduced MW combinations into a second filter without    ambiguity states to estimate at least one MW bias per satellite.-   15. The method of one of 1-14, further comprising shifting at least    one MW bias by an integer number of WL cycles.-   16. The method of one of 1-14, further comprising shifting at least    one MW bias and its respective WL ambiguity by an integer number of    WL cycles.-   17. The method of one of 1-16, wherein the navigation message    comprises orbit information,-   18. Apparatus adapted to perform the method of one of 1-17.-   19. A computer program comprising instructions configured, when    executed on a computer processing unit, to carry out a method    according to one of 1-17.-   20. A computer-readable medium comprising a computer program    according to 19.

Section 13B: Orbit Processing (A-2647)

-   1. A method of processing a set of GNSS signal data derived from    signals of GNSS satellites observed at reference station receivers,    the data representing code observations and carrier observations on    each of at least two carriers over multiple epochs, comprising:    -   a. obtaining an orbit start vector (2635) comprising: a time        sequence of predicted positions and predicted velocities for        each satellite over a first interval and the partial derivatives        of the predicted positions and predicted velocities with respect        to initial positions, initial velocities, force model parameters        and Earth orientation parameters,    -   b. obtaining ionospheric-free linear combinations (2645) of the        code observations and the carrier observations for each        satellite at multiple reference stations, and    -   c. iteratively correcting the orbit start vector (2635) using at        each epoch the ionospheric-free linear combinations (2645) and        predicted Earth orientation parameters (2610), as soon as the        ionospheric-free linear combinations of the epoch are available,        to obtain updated orbit start vector values (2680) comprising a        time sequence of predicted positions and predicted velocities        for each satellite over a subsequent interval of epochs and an        estimate of Earth orientation parameters.-   2. [Startup] The method of 1, wherein obtaining an orbit start    vector (2635) comprises:    -   i. obtaining an approximate orbit vector (2615) for the        satellites,    -   ii. obtaining predicted Earth orbit parameters (2610),    -   iii. iteratively integrating the approximate orbit vector with        the predicted Earth orbit parameters to obtain an orbit        prediction (2620) for an initial time interval and, with each        iteration, adapting the orbit prediction (2620) to the        approximate orbit vector, and    -   iv. preparing from the orbit prediction (2620) an initial set of        values for the orbit start vector and partial derivatives        (2635).-   3. The method of 2, wherein the approximate orbit vector (2615) is    obtained from one of: a broadcast satellite navigation message, IGS    Ultra-rapid Orbits data, and another source of predicted orbits.-   4. The method of one of 2-3, wherein adapting the orbit prediction    (2620) to the approximate orbit vector (2615) is performed using a    least squares approach.-   5. The method of one of 2-4, wherein integrating the approximate    orbit vector (2615) with the predicted Earth orientation parameters    (2610) to obtain an orbit prediction (2620) is iterated until the    orbit prediction remains substantially constant.-   6. The method of 1, wherein obtaining an orbit start vector (2635)    comprises preparing the orbit start vector (2635) from a set of the    updated orbit start vector values (2680) which is not older than a    predetermined time interval.-   7. The method of 6, wherein the predetermined time interval is not    more than a few hours.-   8. [Operation] The method of one of 6-7, wherein preparing the orbit    start vector (2635) comprises: mapping a new orbit start vector    (2690) from the updated orbit start vector (2680) and integrating    the new orbit start vector (2690) to obtain new values for the orbit    start vector (2635).-   9. The method of 8, wherein integrating the new orbit start vector    (2690) comprises integrating the new orbit start vector using Earth    orientation parameters from the updated start vector values (2680).-   10. [Kalman] The method of one of 1-9, wherein correcting comprises    applying an iterative filter comprising one of: a Kalman filter, a    UD factorized filter, and a Square Root Information Filter.-   11. [Satellite parameters] The method of one of 1-10, wherein the    updated orbit start vector (2680) further comprises additional    parameters for each satellite, and wherein iteratively correcting    the orbit start vector comprises correcting the additional    parameters for each satellite.-   12. [Output] The method of one of 1-11, further comprising: mapping    values from the updated orbit start vector 2680 to a current epoch    to obtain a current-epoch orbit position and velocity for each    satellite.-   13. [Fixing] The method of one of 1-6, wherein the orbit start    vector further comprises an ionospheric-free ambiguity (2575) per    receiver-satellite pair, wherein correcting the orbit start vector    (2635) comprises estimating float values for the ionospheric-free    ambiguities, and    -   wherein the method further comprises:    -   1. obtaining a value for a widelane ambiguity (340) per        receiver-satellite pair, the widelane ambiguity values having        integer nature,    -   2. determining integer-nature values for ambiguities linearly        related to the widelane ambiguities and the ionospheric-free        ambiguities from the values of the widelane ambiguities and the        float values of the ionospheric-free ambiguities,    -   3. fixing the values of the ionospheric-free ambiguities using        the integer-nature values, and    -   4. with the values of the ionospheric-free ambiguities fixed,        iteratively correcting the orbit start vector (2635) using a        time sequence of the ionospheric-free linear combinations (2645)        and a set of Earth orbit parameters to obtain an updated orbit        start vector (2680) comprising a time sequence of predicted        positions and predicted velocities for each satellite over an        interval of multiple epochs and an estimate of Earth orientation        parameters.-   14. The method of 13, wherein the ambiguities linearly related to    the widelane ambiguities and the ionospheric-free ambiguities    comprise one of: narrowlane ambiguities, L1 ambiguities and L2    ambiguities.-   15. [Epoch] The method of one of 1-14, wherein the epochs occur at a    rate of about 1 Hz.-   16. [Filter Update] The method of one of 1-15, wherein iteratively    correcting the orbit start vector comprises estimating for each    epoch the values of a satellite clock for each satellite and a    satellite position for each satellite at each epoch.-   17. [Filter Update] The method of one of 1-15, wherein iteratively    correcting the orbit start vector comprises estimating for each    epoch the values of a satellite clock for each satellite, a    satellite clock drift, a satellite clock drift rate, and a satellite    position for each satellite at each epoch.-   18. [Orbit Estimate] The method of one of 1-17, wherein the    predicted time sequence of approximate positions for each satellite    for at least some of the epochs covers an interval of at least 150    seconds.-   19. [Worldwide network] The method of one of 1-18, wherein the    reference stations are widely distributed about the Earth and the    GNSS signal data from each reference station represents code    observations and carrier observations of a subset of the GNSS    satellites at each epoch.-   20. Apparatus adapted to perform the method of one of 1-19.-   21. A computer program comprising instructions configured, when    executed on a computer processing unit, to carry out a method    according to one of 1-19.-   22. A computer-readable medium comprising a computer program    according to 21.

Section 13C: Phase Clock Processing (A-2585)

-   1. [Network Processing—Estimating Phase Clocks] A method of    processing a set of GNSS signal data derived from code observations    and carrier-phase observations at multiple receivers of GNSS signals    of multiple satellites over multiple epochs, the GNSS signals having    at least two carrier frequencies and a navigation message containing    orbit information, comprising:    -   a. obtaining precise orbit information for each satellite,    -   b. determining at least one set of ambiguities per receiver,        each ambiguity corresponding to one of a receiver-satellite link        and a satellite-receiver-satellite link, and    -   c. using at least the precise orbit information, the ambiguities        and the GNSS signal data to estimate a phase-leveled clock per        satellite.-   2. The method of 1, wherein determining ambiguities is performed at    a first rate and wherein estimating a phase-leveled clock per    satellite is performed at a second rate higher than the first rate.-   3. The method of one of 1-2, wherein estimating the phase-leveled    clock per satellite comprises:    -   i. using at least the precise orbit information, the ambiguities        and the GNSS signal data to estimate a set of phase-leveled        clocks per receiver, each phase-leveled clock corresponding to        one of a receiver-satellite link and a        satellite-receiver-satellite link, and    -   ii. using a plurality of the phase-leveled clocks to estimate        one phase-leveled clock per satellite.-   4. The method of one of 1-3, wherein determining the ambiguities    comprises using at least one phase-leveled clock per satellite    previously estimated to estimate the ambiguities.-   5. The method of one of 1-4, further comprising obtaining at least    one additional phase-leveled clock per satellite estimated from an    external source, and wherein determining the ambiguities comprises    using said at least one additional phase-leveled clock per satellite    to estimate the ambiguities.-   6. The method of one of 1-5, further comprising    -   1. determining at least one set of ambiguities per receiver for        additional receivers, each ambiguity corresponding to one of a        receiver-satellite link and a satellite-receiver-satellite link,    -   2. after determining the ambiguities for the additional        receivers, using at least the precise orbit information, the        ambiguities for the additional receivers and the GNSS signal        data to estimate the at least one additional phase-leveled clock        per satellite-   7. The method of one of 1-6, wherein the at least two carrier    frequencies comprise at least two of the GPS L1, GPS L2 and GPS L5    frequencies.-   8. The method of one of 1-7, wherein determining at least one set of    ambiguities per receiver comprises at least one of: estimating float    ambiguity values, estimating float ambiguity values and fixing the    float ambiguity values to integer values, estimating float ambiguity    values and forming at least one weighted average of integer value    candidates, and constraining the ambiguity values in a sequential    filter.-   9. The method of one of 1-8, wherein the ambiguities are    undifferenced between satellites.-   10. The method of one of 1-8, wherein the ambiguities are    single-differenced between satellites.-   11. Apparatus adapted to perform the method of one of 1-10.-   12. A computer program comprising instructions configured, when    executed on a computer processing unit, to carry out a method    according to one of 1-10.-   13. A computer-readable medium comprising a computer program    according to 12.

Section 13D: Rover Processing with Synthesized Reference Station Data(A-2617) [Abstract (FIG. 34)]

-   1. [SBS Processing] A method of determining position of a rover    antenna, comprising:    -   a. obtaining rover GNSS data derived from code observations and        carrier phase observations of GNSS signals of multiple        satellites over multiple epochs,    -   b. obtaining precise satellite data for the satellites,    -   c. determining a virtual base station location,    -   d. generating epochs of synthesized base station data using at        least the precise satellite data and the virtual base station        location, and    -   e. applying a differential process to at least the rover GNSS        data and the synthesized base station data to determine at least        rover antenna positions.-   2. [Low Latency] The method of 1, wherein generating epochs of    synthesized base station data comprises generating an epoch of    virtual base station data for each epoch of GNSS rover data.-   3. [High Accuracy] The method of 1, wherein obtaining precise    satellite data comprises obtaining precise satellite data in sets,    wherein generating epochs of synthesized base station data comprises    generating an epoch of synthesized base station data for each set of    precise satellite data, and wherein applying a differential process    comprises matching each set of GNSS rover data with an epoch of    synthesized base station data.-   4. [Virtual Base Station Location] The method of one of 1-3, wherein    determining a virtual base station location comprises determining    the virtual base station location from at least one of: an    autonomously determined position of the rover antenna, a previously    determined one of said rover antenna positions, a synthesized base    station data generating module, an inertial navigation system, a    mobile telephone tower location, and information provided by a user.-   5. The method of one of 1-4, further comprising updating the virtual    base station location on the occurrence of at least one of: never,    for each epoch of rover data, when the distance between an    approximate rover antenna position and the virtual base station    location exceeds a predetermined threshold, and for each update of    the rover antenna positions.-   6. The method of one of 1-5, wherein each epoch of the synthesized    base station data is generated for a corresponding virtual base    station location.-   7. The method of one of 1-5, wherein determining the virtual base    station location comprises selecting a virtual base station location    close to a current approximate rover antenna position.-   8. The method of one of 1-7, wherein a new virtual base position is    determined when one or more of the following criteria is met: each    rover epoch, each nth rover epoch, after a time interval, after    exceeding a distance between a current approximate rover position    and a current virtual base station location.-   9. The method of one of 1-8, wherein the virtual base station    location is generated for a specific GNSS time interval-   10. The method of one of 1-9, wherein applying a differential    process to at least the rover GNSS data and the synthesized base    station data to determine at least rover antenna positions comprises    at least one of: aided inertial navigation (integrated inertial    navigation and GNSS) processing, real-time kinematic (RTK)    processing, irtk processing; differential GPS processing; float    processing; triple differenced processing; post-processing and    real-time processing.-   11. The method of one of 1-10, further comprising matching each    epoch of the rover GNSS data with an epoch of synthesized base    station data within a few milliseconds.-   12. The method of one of 1-11, wherein generating epochs of    synthesized base station data comprises generating a set of    synthesized base station observations for each of a plurality of    discrete times, and wherein applying a differential process    comprises processing each epoch of GNSS rover data with a set of    synthesized base station observations for a discrete time which is    within ten seconds of the epoch of the GNSS rover data being    processed.-   13. Apparatus adapted to perform the method of one of 1-12.-   14. A computer program comprising instructions configured, when    executed on a computer processing unit, to carry out a method    according to one of 1-12.-   15. A computer-readable medium comprising a computer program    according to 14.

Section 13E: Rover Processing with Ambiguity Fixing (A-2599) [Abstract(FIG. 44)]

-   1. A method of processing a set of GNSS signal data derived from    signals of a set of satellites having carriers observed at a rover    antenna, wherein the data includes a carrier observation and a code    observation of each carrier of each satellite, comprising:    -   a. obtaining for each satellite clock corrections comprising at        least two of: (i) a code-leveled satellite clock, (ii) a        phase-leveled satellite clock, and (iii) a satellite clock bias        representing a difference between a code-leveled satellite clock        and a phase-leveled satellite clock,    -   b. running a first filter which uses at least the GNSS signal        data and the satellite clock corrections to estimate values for        parameters comprising at least one carrier ambiguity for each        satellite, and a covariance matrix of the carrier ambiguities,    -   c. determining from each carrier ambiguity an integer-nature        carrier ambiguity comprising one of: an integer value, and a        combination of integer candidates,    -   d. inserting the integer-nature carrier ambiguities as        pseudo-observations into a second filter, and applying the        second filter to the GNSS signal data and the satellite clock        corrections to obtain estimated values for parameters comprising        at least the position of the receiver.-   2. The method of 1, wherein the integer-nature carrier ambiguities    are between-satellite single-differenced ambiguities.-   3. The method of one of 1-2, further comprising-   a. obtaining a set of MW corrections,-   b. running a third filter using the GNSS signal data and at least    the MW corrections to obtain at least a set of WL ambiguities,-   c. using the set of WL ambiguities to obtain the integer-nature    carrier ambiguity.-   4. The method of 3, wherein the WL ambiguities comprise at least one    of: float values, integer values, and float values based on integer    candidates.-   5. The method of 4, wherein the covariance matrix of the ambiguities    is scaled to reflect the change due to the use of the WL    ambiguities.-   6. The method of one of 1-5, wherein the WL ambiguities are    between-satellite single-differenced ambiguities.-   7. The method of one of 1-6, wherein the integer-nature ambiguities    comprise at least one of: L1-L2 ionospheric-free ambiguities, L2-L5    ionospheric-free ambiguities, and carrier ambiguities of a linear    combination of two or more GNSS frequencies.-   8. The method of one of 1-6, wherein ionospheric delay information    is used to feed one or more of the filters and wherein the    integer-nature ambiguity comprises at least one of: carrier    ambiguity of L1 frequency, carrier ambiguity of L2 frequency,    carrier ambiguity of L5 frequency, and carrier ambiguity of any GNSS    frequency.-   9. The method of one of 1-8, wherein the second filter comprises one    of: a new filter, a copy of the first filter, and the first filter.-   10. The method of one of 1-9, wherein the code-leveled satellite    clock is used for modeling all GNSS observations, and the float    ambiguity is adapted to the level of the phase-leveled clock by    applying the difference between the code-leveled satellite clock and    the phase-leveled satellite clock.-   11. The method of one of 1-9, wherein the code-leveled satellite    clock is used for modeling all GNSS code observations and the    phase-leveled satellite clock is used for modeling all GNSS carrier    observations.-   12. The method of one of 1-11, wherein determining the    integer-nature carrier ambiguity from a float ambiguity comprises at    least one of: rounding the float ambiguity to the nearest integer,    choosing best integer candidates from a set of integer candidates    generated using integer least squares, and computing float values    using a set of integer candidates generated using integer least    squares.-   13. The method of one of 1-12, wherein at least one of the first    filter and second filter further estimates at least one of: receiver    phase-leveled clock, receiver code-leveled clock, tropospheric    delay, receiver clock bias representing a difference between the    code-leveled receiver clock and the phase-leveled receiver clock,    and multipath states.-   14. The method of one of 1-13, wherein at least one of the first    filter, the second filter and the third filter is adapted to update    the estimated values for each of a plurality of epochs of GNSS    signal data.-   15. Apparatus adapted to perform the method of one of 1-14.-   16. A computer program comprising instructions configured, when    executed on a computer processing unit, to carry out a method    according to one of 1-14.-   17. A computer-readable medium comprising a computer program    according to 16.

Any plurality of the above described aspects of the invention may becombined to form further aspects and embodiments, with the aim ofproviding additional benefits notably in terms of surveying efficiencyand/or system usability.

Above-described methods, apparatuses and their embodiments may beintegrated into a rover, a reference receiver or a network station,and/or the processing methods described can be carried out in aprocessor which is separate from and even remote from the receiver/sused to collect the observations (e.g., observation data collected byone or more receivers can be retrieved from storage for post-processing,or observations from multiple network reference stations can betransferred to a network processor for near-real-time processing togenerate a correction data stream and/or virtual-reference-stationmessages which can be transmitted to one or more rovers). Therefore, theinvention also relates to a rover, a reference receiver or a networkstation including any one of the above apparatuses.

In some embodiments, the receiver of the apparatus of any one of theabove-described embodiments is separate from the filter and theprocessing element. Post-processing and network processing of theobservations may notably be performed. That is, the constituent elementsof the apparatus for processing of observations does not itself requirea receiver. The receiver may be separate from and even owned/operated bya different person or entity than the entity which is performing theprocessing. For post-processing, the observations may be retrieved froma set of data which was previously collected and stored, and processedwith reference-station data which was previously collected and stored;the processing is conducted for example in an office computer long afterthe data collection and is thus not real-time. For network processing,multiple reference-station receivers collect observations of the signalsfrom multiple satellites, and this data is supplied to a networkprocessor which may for example generate a correction data stream orwhich may for example generate a “virtual reference station” correctionwhich is supplied to a rover so that the rover can perform differentialprocessing. The data provided to the rover may be ambiguities determinedin the network processor, which the rover may use to speed its positionsolution, or may be in the form of corrections which the rover appliesto improve its position solution. The network is typically operated as aservice to rover operators, while the network operator is typically adifferent entity than the rover operator.

Any of the above-described methods and their embodiments may beimplemented by means of a computer program. The computer program may beloaded on an apparatus, a rover, a reference receiver or a networkstation as described above. Therefore, the invention also relates to acomputer program, which, when carried out on an apparatus, a rover, areference receiver or a network station as described above, carries outany one of the above above-described methods and their embodiments.

The invention also relates to a computer-readable medium or acomputer-program product including the above-mentioned computer program.The computer-readable medium or computer-program product may forinstance be a magnetic tape, an optical memory disk, a magnetic disk, amagneto-optical disk, a CD ROM, a DVD, a CD, a flash memory unit or thelike, wherein the computer program is permanently or temporarily stored.The invention also relates to a computer-readable medium (or to acomputer-program product) having computer-executable instructions forcarrying out any one of the methods of the invention.

The invention also relates to a firmware update adapted to be installedon receivers already in the field, i.e. a computer program which isdelivered to the field as a computer program product. This applies toeach of the above-described methods and apparatuses.

GNSS receivers may include an antenna, configured to receive the signalsat the frequencies broadcasted by the satellites, processor units, oneor more accurate clocks (such as crystal oscillators), one or morecomputer processing units (CPU), one or more memory units (RAM, ROM,flash memory, or the like), and a display for displaying positioninformation to a user.

Where the terms “receiver”, “filter” and “processing element” are usedherein as units of an apparatus, no restriction is made regarding howdistributed the constituent parts of a unit may be. That is, theconstituent parts of a unit may be distributed in different software orhardware components or devices for bringing about the intended function.Furthermore, the units may be gathered together for performing theirfunctions by means of a combined, single unit. For instance, thereceiver, the filter and the processing element may be combined to forma single unit, to perform the combined functionalities of the units.

The above-mentioned units may be implemented using hardware, software, acombination of hardware and software, pre-programmed ASICs(application-specific integrated circuit), etc. A unit may include acomputer processing unit (CPU), a storage unit, input/output (I/O)units, network connection units, etc.

Although the present invention has been described on the basis ofdetailed examples, the detailed examples only serve to provide theskilled person with a better understanding, and are not intended tolimit the scope of the invention. The scope of the invention is muchrather defined by the appended claims.

The invention claimed is:
 1. A method of operating a processor havingassociated data storage and program code enabling the processor toprocess a set of GNSS signal data derived from code observations andcarrier-phase observations at multiple receivers of GNSS signals ofmultiple satellites over multiple epochs, the GNSS signals having atleast two carrier frequencies, comprising: operating the processor toform an MW (Melbourne-Wübbena) combination per receiver-satellitepairing at each epoch to obtain a MW data set per epoch, the MW data setper epoch including a plurality of MW combinations, each of theplurality of MW combinations formed between one of the multiplereceivers and one of the multiple satellites, and operating theprocessor to estimate from the MW data set per epoch an MW bias persatellite which may vary from epoch to epoch, and a set of WL (widelane)ambiguities, each WL ambiguity corresponding to one of areceiver-satellite link and a satellite-receiver-satellite link, whereinthe MW bias per satellite is modeled as one of (i) a single estimationparameter and (ii) an estimated offset plus harmonic variations withestimated amplitudes.
 2. The method of claim 1, further comprisingoperating the processor to apply corrections to the GNSS signal data. 3.The method of claim 1, further comprising operating the processor tosmooth at least one linear combination of GNSS signal data beforeestimating the MW bias per satellite.
 4. The method of claim 1, furthercomprising operating the processor to apply at least one MW biasconstraint to estimate the MW bias per satellite and the set of WLambiguities.
 5. The method of claim 1, further comprising operating theprocessor to apply at least one integer WL ambiguity constraint toestimate the MW bias per satellite and the set of WL ambiguities.
 6. Themethod of claim 1, further comprising operating the processor toconstrain the WL ambiguities, using a spanning tree (ST) over one of anobservation graph and a filter graph.
 7. The method of claim 1, furthercomprising operating the processor to constrain the WL ambiguities,using a minimum spanning tree (MST) on one of an observation graph and afilter graph.
 8. The method of claim 7, wherein the minimum spanningtree is based on edge weights, each edge weight derived fromreceiver-satellite geometry.
 9. The method of claim 8, wherein the edgeweight is defined with respect to one of (i) a geometric distance fromreceiver to satellite, (ii) a satellite elevation angle, and (iii) ageometric distance from satellite to receiver to satellite, and (iv) acombination of the elevations under which the two satellites in a singledifferenced combination are seen at a station.
 10. The method of claim7, wherein the minimum spanning tree is based on edge weights, with eachedge weight based on WL ambiguity information, defined with respect toone of (i) difference of a WL ambiguity to integer, (ii) WL ambiguityvariance, and (iii) a combination of (i) and (ii).
 11. The method ofclaim 1, further comprising fixing at least one of the WL ambiguities asan integer value to provide at least one fixed WL ambiguity.
 12. Themethod of claim 1, further comprising operating the processor todetermine a candidate set of WL integer ambiguity values using the setof WL ambiguities, form a weight for each WL integer ambiguity value inthe candidate set, form a weighted combination by summing the weights,and fix at least one WL ambiguity using the weighted combination. 13.The method of claim 11, wherein operating the processor to estimatecomprises using the at least one fixed WL ambiguity to estimate the MWbias per satellite.
 14. The method of claim 13, wherein operating theprocessor to estimate comprises applying an iterative filter to the MWdata set per epoch and wherein using the at least one fixed WL ambiguitycomprises one of (i) putting the at least one fixed WL ambiguity as anobservation into the iterative filter, (ii) putting the at least onefixed WL ambiguity as an observation into a copy of the iterative filtergenerated after each of a plurality of observation updates, and (iii)reducing a number of MW combinations in the MW data set per epoch by theat least one fixed WL ambiguity and putting the resulting reduced MWcombinations into a second filter without ambiguity states to estimateat least one MW bias per satellite.
 15. The method of claim 1, furthercomprising shifting at least one MW bias by an integer number of WLcycles.
 16. The method of claim 1, further comprising shifting at leastone MW bias and its respective WL ambiguity by an integer number of WLcycles.
 17. The method of claim 1, wherein the navigation messagecomprises orbit information.
 18. Apparatus for processing a set of GNSSsignal data derived from code observations and carrier-phaseobservations at multiple receivers of GNSS signals of multiplesatellites over multiple epochs, the GNSS signals having at least twocarrier frequencies, comprising: a combiner operative to form an MW(Melbourne-Wübbena) combination per receiver-satellite pairing at eachepoch to obtain a MW data set per epoch, the MW data set per epochincluding a plurality of MW combinations, each of the plurality of MWcombinations formed between one of the multiple receivers and one of themultiple satellites, and a processor operative to estimate from the MWdata set per epoch an MW bias per satellite which may vary from epoch toepoch, and a set of WL (widelane) ambiguities, each WL ambiguitycorresponding to one of a receiver-satellite link and asatellite-receiver-satellite link, wherein the MW bias per satellite ismodeled as one of (i) a single estimation parameter and (ii) anestimated offset plus harmonic variations with estimated amplitudes. 19.The apparatus of claim 18, further comprising a receiver operative toapply corrections to the GNSS signal data.
 20. The apparatus of claim18, further comprising a data corrector operative to smooth at least onelinear combination of GNSS signal data before the MW bias per satelliteis estimated.
 21. The apparatus of claim 18, wherein the processor isoperative to apply at least one MW bias constraint to estimate the MWbias per satellite and the set of WL ambiguities.
 22. The apparatus ofclaim 18, wherein the processor is operative to apply at least oneinteger WL ambiguity constraint to estimate the MW bias per satelliteand the set of WL ambiguities.
 23. The apparatus of claim 18, whereinthe processor is operative to use a spanning tree (ST) over one of anobservation graph and a filter graph to constrain the WL ambiguities.24. The apparatus of claim 18, wherein the processor is operative to usea minimum spanning tree (MST) on one of an observation graph and afilter graph to constrain the WL ambiguities.
 25. The apparatus of claim24, wherein the minimum spanning tree is based on edge weights, eachedge weight derived from receiver-satellite geometry.
 26. The apparatusof claim 25, wherein the edge weight is defined with respect to one of(i) a geometric distance from receiver to satellite, (ii) a satelliteelevation angle, and (iii) a geometric distance from satellite toreceiver to satellite, and (iv) a combination of the elevations underwhich the two satellites in a single differenced combination are seen ata station.
 27. The apparatus of claim 24, wherein the minimum spanningtree is based on edge weights, with each edge weight based on WLambiguity information, defined with respect to one of (i) difference ofa WL ambiguity to integer, (ii) WL ambiguity variance, and (iii) acombination of (i) and (ii).
 28. The apparatus of claim 18, furthercomprising an ambiguity fixer module operative to fix at least one ofthe WL ambiguities as an integer value to provide at least one fixed WLambiguity.
 29. The apparatus of claim 18, further comprising anambiguity searcher module operative to determine a candidate set of WLinteger ambiguity values using the set of WL ambiguities, and anambiguity combiner module operative to form a weight for each WL integerambiguity value in the candidate set, form a weighted combination bysumming the weights, and fix at least one WL ambiguity using theweighted combination.
 30. The apparatus of claim 28, wherein theprocessor is further operative to use the at least one fixed WLambiguity to estimate the MW bias per satellite.
 31. The apparatus ofclaim 30, wherein the processor is further operative to apply aniterative filter to the MW data set per epoch and to use the at leastone fixed WL ambiguity as one of (i) an observation in the iterativefilter, (ii) an observation in a copy of the iterative filter generatedafter each of a plurality of observation updates, and (iii) reduce anumber of MW combinations in the MW data set per epoch by the at leastone fixed WL ambiguity and put the resulting reduced MW combinations ina second filter without ambiguity states to estimate at least one MWbias per satellite.
 32. The apparatus of claim 18, further comprising abias shifter operative to shift at least one MW bias by an integernumber of WL cycles.
 33. The apparatus of claim 18, further comprisingan internal shifter operative to shift at least one MW bias and itsrespective WL ambiguity by an integer number of WL cycles.
 34. Theapparatus of claim 18, wherein the navigation message comprises orbitinformation.
 35. Computer-readable non-transitory storage mediumembodying instructions configured, when executed on a computerprocessing unit, to carry out the method of claim 1.